滚动暂停与合并变更
暂停 Deployment 的滚动:pause 之后连续修改镜像、配额、标签等字段不会立即触发滚动,resume 时以最终模板一次收敛,减少无谓的滚动次数。原生 pause 的粒度是 Deployment 级;需要按流量比例或用户定向的精细控制时,改用带路由能力的发布工具。
基本信息
| pause | 暂停滚动,已进行的保留 |
|---|---|
| 期间修改 | 可连续修改多个字段 |
| resume | 合并为一次新 rollout |
| 典型用法 | 多字段发布、控制推进节奏 |
| 粒度 | Deployment 级,非按流量比例 |
典型使用场景
- 多字段发布:镜像与配额一起改,避免多次滚动
- 调整节奏:先暂停观察基线,再恢复推进
- 排障窗口:暂停以保留现场,定位后再继续
- 脚本化发布:封装成发布脚本的顺序步骤
- 演练:模拟逐步推进的发布过程
暂停并合并修改
暂停并合并修改
kubectl rollout pause deployment/web # 暂停,后续修改先不滚动
kubectl set image deployment/web web=registry.example.com/web:1.9.0
kubectl set resources deployment/web -c=web --limits=cpu=500m,memory=512Mi
kubectl rollout status deployment/web # 观察当前进度
kubectl rollout resume deployment/web # 恢复:按最终模板一次收敛命令对照
| 命令 | 作用 | 注意 |
|---|---|---|
| pause | 暂停滚动 | 已进行的保留,不是回滚 |
| 修改字段 | 累积到模板 | 不会立即滚动 |
| resume | 恢复并收敛 | 合并为一次新 rollout |
| status | 观察进度 | 排查卡住先看这里 |
| undo | 回滚版本 | 与暂停恢复是不同能力 |
原生 pause 的粒度是 Deployment 级:需要按流量比例或用户定向的精细控制时,使用带路由能力的发布工具。
暂停不等于回滚:已经创建的新副本仍在,resume 后继续按模板收敛。
脚本里成对出现:pause 后无论成败都要 resume,避免遗忘卡死。
协作注意
- 状态同步:手动暂停时在变更渠道说明,避免其他人误判发布卡死
- 进展观察:status 长时间无进展视为异常,及时介入
合并的边界:只有该工作负载模板内的字段会累积合并,其他资源改动不受影响。
遗忘排查:暂停状态保留在对象里,describe 能看到,先查它再怀疑调度。