更新时间:2024-01-04 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及以上版本
  • 该功能只支持直通场景,即CCE Turbo集群中使用独享型ELB的场景。
  • 该功能需在Pod中配置特定的readinessGates字段,指定标签target-health.elb.k8s.cce/{serviceName},其中{serviceName}为服务名称。
  • Pod就绪状态只在最初对接ELB后端时生效,后续健康检查状态不再影响Pod就绪状态。

通过ELB健康检查设置Pod就绪状态

使用Pod readiness Gates方式如下:

  1. 登录CCE控制台,单击集群名称进入集群。
  2. 在左侧导航栏中选择“工作负载”,在右上角单击“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%

  3. 单击“确定”创建工作负载后,查看工作负载状态,Pod处于未就绪状态。

    事件提示如下:

    实例未就绪:correspondingcondition of pod readinessgate "target-health.elb.k8s.cce/specific-service-name" does not exist.

  4. 在左侧导航栏中选择“服务”,在右上角单击“创建服务”,并进行以下配置。

    • Service名称:需要与Pod中readinessGates字段设置的名称一致。
    • 访问类型:选择负载均衡型Service。
    • 选择器:单击“引用负载标签”,选择上一步中创建的工作负载并单击“确定”
    • 负载均衡器:必须使用独享型ELB,您可以选择已有的ELB或自动创建新的ELB。
    • 健康检查:开启健康检查(不开启则默认为健康检查成功)。

  5. 前往ELB控制台,查看对应的后端服务器组,健康检查状态正常。
  6. 在CCE控制台中查看工作负载状态处于“运行中”。