rollout status 是干什么的
用于观察 Deployment 的收敛过程:跟踪新版本副本就绪进度,全部可用时退出码 0,超时或异常时非零退出。把它放进发布脚本,可以替代轮询 Pod 列表的土办法——已提交不等于已完成,进度要用命令裁决。它解决的是异步操作的完成判定问题:apply 只是提交意图,收敛要单独观察。
基本信息
| 性质 | 只读观察,不修改资源 |
|---|---|
| 成功标志 | 新版本副本达到期望且可用 |
| 超时 | --timeout 设定等待上限;默认 0 表示一直等待 |
| 脚本配合 | status 失败即触发回滚或人工介入 |
输出与状态速读
| 现象 | 含义 | 处理 |
|---|---|---|
| waiting for rollout to finish | 仍在推进 | 设 --timeout 上限防挂死 |
| successfully rolled out | 收敛完成 | 继续后续步骤 |
| error: timed out | 超时未收敛 | 查事件、探针与镜像拉取记录 |
典型使用场景
- 流水线发布裁决:apply 后调用,按退出码判定成败
- 人工发布:等待较长时开一个终端盯进度
- 故障排查:确认是新版本没起来还是旧问题复现
- 流程标准化:替换 sleep 加轮询的土办法
- 多资源批量:循环对多个 deployment 等待,任一失败即停
- 多集群发布:循环对每个集群执行并汇总结果,任一超时即停下排查
- 演练与文档:把等待命令写进 runbook,统一团队判定口径
发布裁决
发布裁决
# 等待收敛,--timeout 控制等待上限
kubectl rollout status deployment/web --timeout=5m
# 立即取一次当前状态,不持续等待
kubectl rollout status deployment/web --watch=false
# 超时后查事件与副本明细
kubectl describe deployment/web | tail -n 20把 rollout status 的退出码作为流水线发布步骤的裁决点:超时即失败,避免已提交等于已完成的错觉。
超时值按真实发布节奏设:设小了正常发布被误判失败,设大了卡住流水线,参考历史发布时长的分位数。
对 DaemonSet、StatefulSet 同样可用:命令格式一致,等待逻辑按各自收敛语义执行。