文档首页> 云容器实例 CCI> 最佳实践> 负载管理> CCI应用进行优雅滚动升级
更新时间:2024-01-16 GMT+08:00

CCI应用进行优雅滚动升级

应用场景

用户在CCI中部署工作负载时,应用发布成了LoadBalance类型的Service或Ingress且对接的独享型ELB,经过ELB的访问流量支持直通到容器中;当应用进行滚动升级或者弹性扩缩容,通过配置容器探针,最短就绪时间等可以做到优雅升级,从而实现优雅弹性扩缩容(在升级或者扩缩容过程中业务不会出现5xx的错误响应)。

操作步骤

在此以nginx的无状态工作负载为例,提供了CCI中应用进行优雅滚动升级或者弹性扩缩容最佳实践。

  1. 在CCI控制台,单击左侧栏目树中的“工作负载 > 无状态 Deployment”,单击右上角“镜像创建”。

    图1 创建无状态负载

  2. 在“容器配置”,单击“使用该镜像”,选择镜像完成。
  3. 在“容器设置”,单击展开“高级设置 > 健康检查 > 应用业务探针”,如下图设置工作负载业务探针。

    图2 配置应用业务探针

    该配置是检查用户业务是否就绪,不就绪则不转发流量到当前实例。

  4. 单击展开“生命周期”,配置容器的“停止前处理”,保证容器在退出过程中能够对外提供服务。

    图3 配置生命周期

    该配置是保证业务容器在退出过程中能够对外提供服务。

  5. 单击“下一步:访问设置”,如图4

    图4 配置访问类型及端口

  6. 单击“下一步”完成工作负载的创建。
  7. 配置最短就绪时间。

    最短就绪时间,用于指定新创建的Pod在没有任意容器崩溃情况下的最小就绪时间,只有超出这个时间Pod才被视为可用。

    “最短就绪时间”需在右上角的“YAML编辑”进行配置。如图5:
    图5 配置最短就绪时间
    • 推荐的配置minReadySeconds时长,为业务容器的启动预期时间加上ELB服务下发member到生效的时间。
    • minReadySeconds的时长需要小于sleep时长,保证旧的容器停止并退出之前,新的容器已经准备就绪。

  8. 配置完成后,对应用进行升级和弹性扩缩容的打流测试。

    准备一台集群外的客户端节点,预置检测脚本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

  9. 运行检测脚本:bash detection_script.sh,并在CCI界面触发应用的滚动升级,如图6修改了容器规格,触发了应用的滚动升级。

    图6 修改容器规格

    滚动升级的过程中,应用的访问并未中断,并且返回的请求都是“200OK”,说明升级过程是优雅升级,没有中断的。