更新时间:2024-11-12 GMT+08:00
为ELB Ingress配置慢启动持续时间
慢启动指负载均衡器向组内新增的后端服务器Pod线性增加请求分配权重,直到配置的慢启动时间结束,负载均衡器向后端服务器Pod正常发送完请求的启动模式。慢启动能够实现业务的平滑启动,完美避免业务抖动问题。
配置慢启动持续时间后,如果您在YAML中删除对应的annotation,将不启用慢启动。
前提条件
- 已创建一个CCE Standard或CCE Turbo集群,且集群版本为v1.23及以上。
- 集群中需提前部署可用的工作负载用于对外提供访问。若您无可用工作负载,可参考创建无状态负载(Deployment)、创建有状态负载(StatefulSet)或创建守护进程集(DaemonSet)部署工作负载。
- 为提供对外访问的工作负载配置Service,ELB Ingress支持的Service类型请参见ELB Ingress支持的Service类型。
约束与限制
- 仅独享型负载均衡支持HTTP和HTTPS类型的后端服务器组Pod开启慢启动功能。
- 仅在流量分配策略使用加权轮询算法时生效。
- 慢启动仅对新增后端服务器Pod生效,后端服务器组Pod首次添加后端服务器慢启动不生效。
- 后端服务器的慢启动结束之后,不会再次进入慢启动模式。
- 在健康检查开启时,后端服务器Pod在线后慢启动生效。
- 在健康检查关闭时,慢启动立即生效。
- 在配置慢启动后,该Ingress下的所有转发策略都会生效。
设置慢启动持续时间
- 请参见通过kubectl连接集群,使用kubectl连接集群。
- 创建名为“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。
参数说明:慢启动持续时间,单位秒。
- 独享型负载均衡器生效。
- 目标服务分配策略类型为加权轮询算法且不开启会话保持时生效。
- 创建Ingress。
kubectl create -f ingress-test.yaml
回显如下,表示Ingress服务已创建。
ingress/ingress-test created
- 查看已创建的Ingress。
kubectl get ingress
回显如下,表示Ingress服务创建成功。
NAME CLASS HOSTS ADDRESS PORTS AGE ingress-test cce * 121.**.**.** 80 10s