文档首页/ 云容器引擎 CCE/ 用户指南/ 网络/ 服务(Service)/ 负载均衡(LoadBalancer)/ 为负载均衡类型的Service指定多个端口配置健康检查
更新时间:2024-06-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: **.**.**.**
表1 elb.health-check-options字段数据结构说明

参数

是否必填

参数类型

描述

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字符

expected_codes

String

期望响应状态码,仅v1.19.16-r50、v1.21.11-r10、v1.23.9-r10、v1.25.4-r10、v1.27.1-r10及以上版本的集群支持。

取值:

  • 单值:单个返回码,例如"200"。
  • 列表:多个特定返回码,例如"200,202"。
  • 区间:一个返回码区间,例如"200-204"。

默认值:200,取值范围1-64个字符

仅支持HTTP设置该字段,其他协议设置不会生效。

相关文档