更新时间:2024-09-29 GMT+08:00

为ELB Ingress配置慢启动持续时间

慢启动指负载均衡器向组内新增的后端服务器Pod线性增加请求分配权重,直到配置的慢启动时间结束,负载均衡器向后端服务器Pod正常发送完请求的启动模式。慢启动能够实现业务的平滑启动,完美避免业务抖动问题。

配置慢启动持续时间后,如果您在YAML中删除对应的annotation,将不启用慢启动。

前提条件

  • 已创建一个集群,且集群版本为v1.23及以上。
  • 使用kubectl连接到集群,详情请参见通过kubectl连接集群

约束与限制

  • 仅独享型负载均衡支持HTTP和HTTPS类型的后端服务器组Pod开启慢启动功能。
  • 仅在流量分配策略使用加权轮询算法时生效。
  • 慢启动仅对新增后端服务器Pod生效,后端服务器组Pod首次添加后端服务器慢启动不生效。
  • 后端服务器的慢启动结束之后,不会再次进入慢启动模式。
  • 在健康检查开启时,后端服务器Pod在线后慢启动生效。
  • 在健康检查关闭时,慢启动立即生效。
  • 在配置慢启动后,该Ingress下的所有转发策略都会生效。

设置慢启动持续时间

  1. 请参见通过kubectl连接集群,使用kubectl连接集群。
  2. 创建名为“ingress-test.yaml”的YAML文件,此处文件名可自定义。

    vi ingress-test.yaml

    以关联已有ELB为例,YAML文件配置如下:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: ingress-test
      namespace: default
      annotations:
        kubernetes.io/elb.port: '80'
        kubernetes.io/elb.id: <your_elb_id>  #替换为您已有的ELB ID
        kubernetes.io/elb.class: performance
        kubernetes.io/elb.slowstart: '30' #设置慢启动持续时间
    spec:
      rules:
        - host: ''
          http:
            paths:
              - path: /
                backend:
                  service:
                    name: <your_service_name>  #替换为您的目标服务名称
                    port:
                      number: 80             #替换为您的目标服务端口
                property:
                  ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
                pathType: ImplementationSpecific
      ingressClassName: cce
    表1 慢启动参数说明

    参数

    是否必填

    参数类型

    描述

    kubernetes.io/elb.slowstart

    String

    负载均衡器向慢启动模式下的后端服务器Pod线性增加请求分配权重,当配置的慢启动持续时间期限结束后,负载均衡器向后端服务器Pod发送完整的请求比例,此后本次添加的后端服务器Pod退出慢启动模式。

    v1.23以上版本的集群支持此字段

    取值范围:30-1200。

    参数说明:慢启动持续时间,单位秒。

    • 独享型负载均衡器生效。
    • 目标服务分配策略类型为加权轮询算法且不开启会话保持时生效。

  3. 创建Ingress。

    kubectl create -f ingress-test.yaml

    回显如下,表示Ingress服务已创建。

    ingress/ingress-test created

  4. 查看已创建的Ingress。

    kubectl get ingress

    回显如下,表示Ingress服务创建成功。

    NAME          CLASS    HOSTS     ADDRESS          PORTS   AGE
    ingress-test  cce      *         121.**.**.**     80      10s