更新时间:2025-08-19 GMT+08:00
为负载均衡类型的Service配置IP类型的后端
默认情况下,在CCE集群中创建Service或Ingress对接ELB时,CCE会自动在ELB监听器添加对应的后端服务器,具体情况如下:
- 共享型ELB支持添加的后端服务器类型为云服务器,CCE Standard集群和Turbo集群添加的后端服务器都是云服务器(即节点)。
- 独享型ELB支持添加的后端服务器类型为云服务器、辅助弹性网卡、IP类型后端,其中CCE Standard集群添加的后端服务器为云服务器(即节点),CCE Turbo集群添加的后端服务器为辅助弹性网卡(即Pod的IP)。
在v1.25.16-r30、v1.27.16-r30、v1.28.15-r20、v1.29.13-r0、v1.30.10-r0、v1.31.6-r0、v1.32.1-r0版本的集群中,支持为独享型ELB添加IP类型后端,支持将节点IP或Pod IP地址作为后端服务器。
如图1所示,如果多个ELB实例或多个监听器挂载相同后端服务器,同一个客户端通过这些ELB实例访问到相同的后端服务器时,后端服务器从弹性负载均衡处接收的客户端请求报文的源IP和源端口相同,会导致访问概率性失败或超时。详细说明请参见为什么同一客户端同时访问不同ELB实例、IP或端口会概率性超时?。如果将ELB的后端服务器配置为IP类型,则可有效避免上述问题。
前提条件
- 已创建Kubernetes集群,且集群版本满足以下要求:
- v1.25集群:v1.25.16-r30及以上
- v1.27集群:v1.27.16-r30及以上
- v1.28集群:v1.28.15-r20及以上
- v1.29集群:v1.29.13-r0及以上
- v1.30集群:v1.30.10-r0及以上
- v1.31集群:v1.31.6-r0及以上
- v1.32集群:v1.32.1-r0及以上
- 其他更高版本集群
- 如果您需要通过命令行创建,请使用kubectl连接到集群,详情请参见通过kubectl连接集群。
通过kubectl命令行配置
- 请参见通过kubectl连接集群,使用kubectl连接集群。
- 创建名为“service-test.yaml”的YAML文件,此处文件名可自定义。
vi service-test.yaml
以关联已有ELB为例,YAML配置文件如下:apiVersion: v1 kind: Service metadata: name: service-test labels: app: test version: v1 namespace: default annotations: kubernetes.io/elb.class: performance #需使用独享型ELB kubernetes.io/elb.id: <your_elb_id> #替换为您已有的ELB ID kubernetes.io/elb.ip-target-enabled: 'true' #配置IP类型后端 spec: selector: app: test version: v1 externalTrafficPolicy: Cluster ports: - name: cce-service-0 targetPort: 80 #替换为您的容器端口 nodePort: 0 port: 80 protocol: TCP type: LoadBalancer loadBalancerIP: <your_elb_ip> #替换为您已有的ELB私有IP
表1 配置IP类型后端参数说明 参数
参数类型
描述
kubernetes.io/elb.ip-target-enabled
String
表示为ELB配置IP类型的后端,启用后该Service/Ingress添加的后端地址均为VPC子网内的IP。其中CCE Turbo集群的后端为<Pod IP>:<targetPort>,CCE Standard集群的后端为<节点IP>:<NodePort>。- true:表示配置IP类型的后端。
- 不支持其他取值
注意:- 仅独享型ELB支持该特性。
- 该特性仅在创建Service/Ingress时支持开启,已经存在的Service/Ingress无法添加和删除该annotation,如需使用特性,请新建Service/Ingress。
- 如果Service/Ingress所使用的负载均衡器未开启IP类型后端功能,添加annotation后CCE会自动开启开关,且开启后无法关闭。
- 请确保Service/Ingress所使用的负载均衡器后端子网有足够的IP地址,否则该功能无法正常使用。您可以通过负载均衡器的“基本信息 > 后端子网”添加多个后端子网来增加后端子网的IP地址。
- 其他注意事项请参考通过IP类型后端功能添加服务器至ELB。
- 创建Service。
kubectl create -f service-test.yaml
回显如下,表示Service已创建。
service/service-test created
验证IP类型的后端是否创建成功
- 登录ELB控制台。
- 找到Service关联的ELB,单击ELB名称。
- 查看基本信息,该ELB已开启“IP类型后端”。
- 切换至“监听器”页签,查看监听器的后端服务器已添加为IP类型后端。