网络负载均衡
本主题介绍如何使用 GKE on Azure 设置由 Azure 标准负载均衡器提供支持的 L4 负载均衡器。
创建 LoadBalancer
类型的 Service 时,GKE on Azure 控制器会配置 Azure 负载均衡器。
准备工作
- 您必须创建集群并配置
kubectl
才能访问集群。
选择公共或专用负载均衡器
服务负载均衡器可以是公共的(具有公共前端 IP),也可以是内部(只能通过专用 IP 访问)。
默认情况下,新 Service 是公开的。要创建内部负载均衡器,请在清单中将 service.beta.kubernetes.io/azure-load-balancer-internal
注释设置为 "true"
。
为内部负载均衡器选择子网
创建内部负载均衡器时,GKE on Azure 需要选择用于放置负载均衡器的子网。此默认服务负载均衡器子网是从集群的创建参数中选择的,如下所示:
- 如果已指定且非空,则使用
cluster.networking.serviceLoadBalancerSubnetId
- 否则
cluster.controlPlane.subnetId
或者,您也可以通过向 Service 添加 service.beta.kubernetes.io/azure-load-balancer-internal-subnet
注释来指定要用于给定负载均衡器的子网。此注释的值是子网的名称。
创建 LoadBalancer 示例
您可以通过创建部署并使用 Service 公开该部署来创建负载均衡器。
创建您的部署。此 Deployment 中的容器会侦听端口 50001。将以下 YAML 保存到名为
my-deployment-50001.yaml
的文件:apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment-50001 spec: selector: matchLabels: app: products department: sales replicas: 3 template: metadata: labels: app: products department: sales spec: containers: - name: hello image: "gcr.io/google-samples/hello-app:2.0" env: - name: "PORT" value: "50001"
使用
kubectl apply
创建 Deployment:kubectl apply -f my-deployment-50001.yaml
验证三个 pod 是否正在运行:
kubectl get pods --selector=app=products
为您的部署创建类型为
LoadBalancer
的 Service。您可以创建公共或内部的 Azure 标准负载均衡器。选择下列其中一个选项。将以下清单之一复制到名为
my-lb-service.yaml
的文件中。公开
apiVersion: v1 kind: Service metadata: name: my-lb-service spec: type: LoadBalancer selector: app: products department: sales ports: - protocol: TCP port: 60000 targetPort: 50001
内部
您可以通过将注释
service.beta.kubernetes.io/azure-load-balancer-internal
设置为"true"
来创建内部 LoadBalancer。以下 YAML 包含此注释。yaml apiVersion: v1 kind: Service metadata: name: my-lb-service annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" spec: type: LoadBalancer selector: app: products department: sales ports: - protocol: TCP port: 60000 targetPort: 50001
使用
kubectl apply
创建 Service:kubectl apply -f my-lb-service.yaml
使用
kubectl get service
查看 Service 的地址。kubectl get service my-lb-service
输出将包含列
EXTERNAL-IP
的负载均衡器地址(公共或专用),具体取决于负载均衡器的创建方式。如果您已创建公共负载均衡器,则可以使用
curl
连接到负载均衡器。将 external-ip 替换为上一步的kubectl get service
输出中的地址。curl http://external-ip:60000
输出类似以下内容:
Hello, world! Version: 2.0.0 Hostname: my-deployment-50001-84b6dc5555-zmk7q
清理
如需移除 Service 和 Deployment,请使用 kubectl delete
。
kubectl delete -f my-lb-service.yaml
kubectl delete -f my-deployment-50001.yaml