更新时间:2024-01-16 GMT+08:00
CCI应用进行优雅滚动升级
应用场景
用户在CCI中部署工作负载时,应用发布成了LoadBalance类型的Service或Ingress且对接的独享型ELB,经过ELB的访问流量支持直通到容器中;当应用进行滚动升级或者弹性扩缩容,通过配置容器探针,最短就绪时间等可以做到优雅升级,从而实现优雅弹性扩缩容(在升级或者扩缩容过程中业务不会出现5xx的错误响应)。
操作步骤
在此以nginx的无状态工作负载为例,提供了CCI中应用进行优雅滚动升级或者弹性扩缩容最佳实践。
- 在CCI控制台,单击左侧栏目树中的“工作负载 > 无状态 Deployment”,单击右上角“镜像创建”。
图1 创建无状态负载
- 在“容器配置”,单击“使用该镜像”,选择镜像完成。
- 在“容器设置”,单击展开“高级设置 > 健康检查 > 应用业务探针”,如下图设置工作负载业务探针。
该配置是检查用户业务是否就绪,不就绪则不转发流量到当前实例。
- 单击展开“生命周期”,配置容器的“停止前处理”,保证容器在退出过程中能够对外提供服务。
图3 配置生命周期
该配置是保证业务容器在退出过程中能够对外提供服务。
- 单击“下一步:访问设置”,如图4。
- 单击“下一步”完成工作负载的创建。
- 配置最短就绪时间。
最短就绪时间,用于指定新创建的Pod在没有任意容器崩溃情况下的最小就绪时间,只有超出这个时间Pod才被视为可用。
“最短就绪时间”需在右上角的“YAML编辑”进行配置。如图5:- 推荐的配置minReadySeconds时长,为业务容器的启动预期时间加上ELB服务下发member到生效的时间。
- minReadySeconds的时长需要小于sleep时长,保证旧的容器停止并退出之前,新的容器已经准备就绪。
- 配置完成后,对应用进行升级和弹性扩缩容的打流测试。
准备一台集群外的客户端节点,预置检测脚本detection_script.sh,内容如下,其中100.85.125.90:7552为service的公网访问地址:
#! /bin/bash for (( ; ; )) do curl -I 100.85.125.90:7552 | grep "200 OK" if [ $? -ne 0 ]; then echo "response error!" exit 1 fi done
- 运行检测脚本:bash detection_script.sh,并在CCI界面触发应用的滚动升级,如图6修改了容器规格,触发了应用的滚动升级。
滚动升级的过程中,应用的访问并未中断,并且返回的请求都是“200OK”,说明升级过程是优雅升级,没有中断的。
父主题: 负载管理