更新时间:2024-07-31 GMT+08:00
通过ELB健康检查设置Pod就绪状态
Pod的就绪状态可与挂载到ELB后端的健康检查联动,在健康检查成功后,将Pod置为就绪。与Pod的strategy.rollingUpdate.maxSurge和strategy.rollingUpdate.maxUnavailable参数配合,可实现负载的优雅滚动升级。
约束与限制
- 该特性从以下版本开始支持:
- 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以上版本集群
- 该功能只支持直通场景,即CCE Turbo集群中使用独享型ELB的场景。
- 该功能需在Pod中配置特定的readinessGates字段,指定标签target-health.elb.k8s.cce/{serviceName},其中{serviceName}为服务名称。
- Pod就绪状态只在最初对接ELB后端时生效,后续健康检查状态不再影响Pod就绪状态。
通过ELB健康检查设置Pod就绪状态
使用Pod ReadinessGates方式如下:
- 登录CCE控制台,单击集群名称进入集群。
- 在左侧导航栏中选择“工作负载”,在右上角单击“YAML创建”。
YAML内容如下:
kind: Deployment apiVersion: apps/v1 metadata: name: nginx namespace: default labels: version: v1 spec: replicas: 1 selector: matchLabels: app: nginx version: v1 template: metadata: labels: app: nginx version: v1 spec: containers: - name: container-1 image: nginx:latest imagePullSecrets: - name: default-secret readinessGates: - conditionType: target-health.elb.k8s.cce/specific-service-name # 指定ServiceName。 strategy: type: RollingUpdate rollingUpdate: maxUnavailable: 25% # 配合以下两个参数,可以控制ELB后端个数,实现优雅滚动升级。 maxSurge: 25%
- 单击“确定”创建工作负载后,查看工作负载状态,Pod处于未就绪状态。
事件提示如下:
实例未就绪:correspondingcondition of pod readinessgate "target-health.elb.k8s.cce/specific-service-name" does not exist.
- 在左侧导航栏中选择“服务”,在右上角单击“创建服务”,并进行以下配置。
- Service名称:需要与Pod中readinessGates字段设置的名称一致。
- 访问类型:选择负载均衡型Service。
- 选择器:单击“引用负载标签”,选择上一步中创建的工作负载并单击“确定”。
- 负载均衡器:必须使用独享型ELB,您可以选择已有的ELB或自动创建新的ELB。
- 健康检查:开启健康检查(不开启则默认为健康检查成功)。
图1 负载均衡配置
- 前往ELB控制台,查看对应的后端服务器组,健康检查状态正常。
- 在CCE控制台中查看工作负载状态处于“运行中”。