首页/开发/CI/CD 与发布速查/kubectl rollout status 跟踪发布
发布策略60 条

kubectl rollout status 跟踪发布

观察 Deployment 收敛过程的命令:输出各副本进度,脚本可用它判断发布成功或超时,替代轮询 Pod 列表的土办法。

CI/CD 与发布速查开发更新于 2026-10-13

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 同样可用:命令格式一致,等待逻辑按各自收敛语义执行。

易错点

  • 不等收敛就宣布发布完成:后续崩溃时无人知道发布尚未成功
  • 只看退出码不看事件:收敛失败常伴随探针失败、镜像拉取失败等信息
  • --timeout 留在默认不限时:CI 卡死在等待里,必须设置上限让超时快速失败
  • 把 status 当业务健康检查:收敛只说明副本就绪,业务指标仍要单独确认
  • 串行等待没有并发:几十个资源逐个等待把发布拖长,按依赖图并行并设总超时

数据来源与参考

  • Kubernetes 文档《kubectl rollout status》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌