容器服务支持创建负载均衡模式(LoadBalancer)的服务。本文为您介绍如何通过 YAML 创建负载均衡服务。
注意
配置负载均衡服务前,请务必仔细阅读 负载均衡服务使用注意事项。
已创建集群,详情请参见 创建集群。
已安装 kubectl 工具到本地。具体操作说明,请参见 安装和设置 kubectl。
已通过 Kubectl 连接目标集群。具体操作说明,请参见 连接集群。
已创建工作负载,详情请参见 创建无状态负载、创建有状态负载、创建守护进程。
说明
当前仅支持关联无状态负载(Deployment)、有状态负载(Statefulset)和守护进程(DaemonSet)。
service-demo.yaml
代码如下:apiVersion: v1 kind: Service metadata: name: service-demo # 服务的名称 spec: selector: app: nginx # 通过标签选择器将服务与后段容器组(Pod)绑定 ipFamilyPolicy: PreferDualStack # 通信协议类型。SingleStack 表示单栈,PreferDualStack 表示双栈 ipFamilies: # 具体使用的通信协议。单栈场景支持 IPv4;双栈场景支持 IPv4&IPv6、IPv6&IPv4 - IPv6 - IPv4 ports: - name: rule # 端口映射规则名称 protocol: TCP # 服务协议,支持 TCP 或 UDP port: 80 # 服务端口 targetPort: 80 # 容器端口,即工作负载对外提供服务的端口号或端口名称,例如:Nginx 开放的默认端口号为 80 type: LoadBalancer # 服务的类型,包括:Nodeport、ClusterIP 和 LoadBalancer
注意
service.beta.kubernetes.io/volcengine-loadbalancer-address-type: "PRIVATE"
,指定 CLB 的类型为 PRIVATE。kubectl apply -f service-demo.yaml
kubectl get svc -n default
预期结果如下。其中,EXTERNAL-IP
是与该服务对接的 CLB 公网 IP 地址。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service-demo LoadBalancer 10.xxx.xxx.xxx 180.xxx.xxx.xxx 80:30891/TCP 44s
kubectl describe svc service-demo -n default
预期结果如下。其中,Annotation 中展示了 CLB 的相关信息,包括:CLB 实例 ID、子网 ID、EIP 计费类型等。您可以在 均衡负载 控制台中,使用 CLB 实例 ID 查找对应的 CLB 实例。
说明
负载均衡服务 Annotation 的详细解释,请参考 使用 Annotation 配置负载均衡服务。
Name: service-demo Namespace: default Labels: service.beta.kubernetes.io/volcengine-loadbalancer-id=clb-3qe5tw*** Annotations: service.beta.kubernetes.io/system-volcengine-loadbalancer-create-response-id: clb-3qe5twv8*** service.beta.kubernetes.io/volcengine-loadbalancer-address-type: PUBLIC service.beta.kubernetes.io/volcengine-loadbalancer-bandwidth: 1 service.beta.kubernetes.io/volcengine-loadbalancer-eip-billing-type: 3 service.beta.kubernetes.io/volcengine-loadbalancer-health-check-flag: off service.beta.kubernetes.io/volcengine-loadbalancer-isp-type: BGP service.beta.kubernetes.io/volcengine-loadbalancer-name: k8s-7f328f46*** service.beta.kubernetes.io/volcengine-loadbalancer-pass-through: false service.beta.kubernetes.io/volcengine-loadbalancer-scheduler: wrr service.beta.kubernetes.io/volcengine-loadbalancer-spec: small_1 service.beta.kubernetes.io/volcengine-loadbalancer-subnet-id: subnet-3qe2d3p*** Selector: app=nginx Type: LoadBalancer IP Family Policy: SingleStack IP Families: IPv4 IP: 10.xxx.xxx.xxx IPs: 10.xxx.xxx.xxx LoadBalancer Ingress: 180.xxx.xxx.xxx Port: rule 80/TCP TargetPort: 80/TCP NodePort: rule 30429/TCP Endpoints: 192.168.112.4:80,192.168.128.9:80,192.168.48.3:80 Session Affinity: None External Traffic Policy: Cluster Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal EnsuringLoadBalancer 71s (x4 over 83s) service-controller Ensuring load balancer Normal EnsuredLoadBalancer 70s (x2 over 71s) service-controller Ensured load balancer