网络负载均衡
本主题介绍如何使用 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