多云容器平台 MCP-工作负载升级策略配置:升级示例

时间:2023-11-01 16:15:51

升级示例

Deployment的升级可以是声明式的,也就是说只需要修改Deployment的YAML定义即可,比如使用kubectl edit命令将上面Deployment中的镜像修改为nginx:alpine。修改完成后再查询ReplicaSet和Pod,发现创建了一个新的ReplicaSet,Pod也重新创建了。

$ kubectl edit deploy nginx$ kubectl get rsNAME               DESIRED   CURRENT   READY     AGEnginx-6f9f58dffd   2         2         2         1mnginx-7f98958cdf   0         0         0         48m$ kubectl get podsNAME                     READY     STATUS    RESTARTS   AGEnginx-6f9f58dffd-tdmqk   1/1       Running   0          1mnginx-6f9f58dffd-tesqr   1/1       Running   0          1m

Deployment可以通过maxSurge和maxUnavailable两个参数控制升级过程中同时重新创建Pod的比例,这在很多时候是非常有用,配置如下所示。

spec:  strategy:    rollingUpdate:      maxSurge: 1      maxUnavailable: 0    type: RollingUpdate

在前面的例子中,由于spec.replicas是2,如果maxSurge和maxUnavailable都为默认值25%,那实际升级过程中,maxSurge允许最多3个Pod存在(向上取整,2*1.25=2.5,取整为3),而maxUnavailable则不允许有Pod Unavailable(向上取整,2*0.75=1.5,取整为2),也就是说在升级过程中,一直会有2个Pod处于运行状态,每次新建一个Pod,等这个Pod创建成功后再删掉一个旧Pod,直至Pod全部为新Pod。

support.huaweicloud.com/usermanual-mcp/mcp_01_0071.html