更新时间:2024-08-17 GMT+08:00
为负载均衡类型的Service指定多个端口配置健康检查
LoadBalancer Service的健康检查相关注解字段由"kubernetes.io/elb.health-check-option"升级为"kubernetes.io/elb.health-check-options",支持Service每个端口单独配置,且可以只配置部分端口。如无需单独配置端口协议,原有注解字段依旧可用无需修改。
约束与限制
- 该特性从以下版本开始支持:
- v1.19集群:v1.19.16-r5及以上版本
- v1.21集群:v1.21.8-r0及以上版本
- v1.23集群:v1.23.6-r0及以上版本
- v1.25集群:v1.25.2-r0及以上版本
- v1.25以上版本集群
- 不允许同时配置 "kubernetes.io/elb.health-check-option" 和 "kubernetes.io/elb.health-check-options"。
- target_service_port字段必须配置,且不能重复。
- TCP端口只能配置健康检查协议为TCP、HTTP,UDP端口必须配置健康检查协议为UDP。
操作步骤
使用"kubernetes.io/elb.health-check-options"注解的示例如下:
apiVersion: v1 kind: Service metadata: name: nginx namespace: default labels: app: nginx version: v1 annotations: kubernetes.io/elb.class: union # 负载均衡类型 kubernetes.io/elb.id: <your_elb_id> # ELB ID,替换为实际值 kubernetes.io/elb.lb-algorithm: ROUND_ROBIN # 负载均衡器算法 kubernetes.io/elb.health-check-flag: 'on' # 开启ELB健康检查功能 kubernetes.io/elb.health-check-options: '[ { "protocol": "TCP", "delay": "5", "timeout": "10", "max_retries": "3", "target_service_port": "TCP:1", "monitor_port": "22" }, { "protocol": "HTTP", "delay": "5", "timeout": "10", "max_retries": "3", "path": "/", "target_service_port": "TCP:2", "monitor_port": "22", "expected_codes": "200-399,401,404" } ]' spec: selector: app: nginx version: v1 externalTrafficPolicy: Cluster ports: - name: cce-service-0 targetPort: 1 nodePort: 0 port: 1 protocol: TCP - name: cce-service-1 targetPort: 2 nodePort: 0 port: 2 protocol: TCP type: LoadBalancer loadBalancerIP: **.**.**.**
参数 |
是否必填 |
参数类型 |
描述 |
---|---|---|---|
target_service_port |
是 |
String |
spec.ports添加健康检查的目标端口,由协议、端口号组成,如:TCP:80 |
monitor_port |
否 |
String |
重新指定的健康检查端口,不指定时默认使用业务端口。
说明:
请确保该端口在Pod所在节点已被监听,否则会影响健康检查结果。 |
delay |
否 |
String |
健康检查间隔(秒) 默认值:5,取值范围:1-50 |
timeout |
否 |
String |
健康检查的超时时间(秒) 默认值:10,取值范围1-50 |
max_retries |
否 |
String |
健康检查的最大重试次数 默认值:3,取值范围1-10 |
protocol |
否 |
String |
健康检查的协议 默认值:取关联服务的协议 取值范围:“TCP”、“UDP”或者“HTTP” |
path |
否 |
String |
健康检查的URL,协议是“HTTP”时需要配置 默认值:“/” 取值范围:1-80字符 |