要批量修改deployment的pod模板而不触发多次滚动更新,需先暂停deployment,再执行镜像、资源、环境变量等配置变更,最后恢复滚动更新并验证生效。

当你需要对 Deployment 的 Pod 模板做多次配置变更(比如同时更新镜像、资源限制、环境变量),又不想每次修改都触发一次滚动更新,就必须先暂停 Deployment 的上线过程,等所有变更完成后再统一恢复发布。
暂停 Deployment 更新
执行命令暂停指定 Deployment 的滚动更新:
```kubectl rollout pause deployment/【deployment-name】```
暂停后,Deployment 会停止创建新 ReplicaSet,也不会驱逐旧 Pod。此时无论你用 kubectl set image、kubectl set resources 还是 kubectl edit 修改 Pod 模板,都不会触发实际的 Pod 替换。
验证是否已暂停:运行 kubectl get deployment <strong>【deployment-name】</strong> -o wide,输出中 CONDITIONS 字段应包含 Progressing=False,且 UP-TO-DATE 数值不再变化。
批量修改 Pod 模板配置
方法一:更新容器镜像
```kubectl set image deployment/【deployment-name】 【container-name】=【new-image】```
方法二:设置 CPU 和内存限制
```kubectl set resources deployment/【deployment-name】 -c=【container-name】 --limits=cpu=200m,memory=512Mi```
方法三:直接编辑 YAML(适合改多个字段)
```kubectl edit deployment/【deployment-name】```
在打开的编辑器中修改 spec.template.spec.containers[0] 下的任意字段,保存退出即可。注意:只有 spec.template 内部的变更才会被记录为新 revision,扩缩容操作不会触发版本更新。
恢复滚动更新并确认生效
第一步:执行恢复命令
```kubectl rollout resume deployment/【deployment-name】```
第二步:观察新 ReplicaSet 是否创建
```kubectl get rs```
你会看到一个新命名的 ReplicaSet(如 nginx-deployment-7576c67d77)开始拉起 Pod,而旧 ReplicaSet 的 DESIRED 逐步降为 0。
第三步:检查 Pod 镜像与资源配置是否同步生效
```kubectl describe deployment/【deployment-name】```
重点核对 Pod Template 区域中的 Image 和 Resources 字段——它们必须与你之前批量设置的内容完全一致。如果这里还是旧值,说明某次 set 命令执行失败或未生效,需重新执行对应命令。











