rollout status 是什么
rollout status 阻塞等待一次发布完成,并持续输出进度,直到新版本全部可用、判定失败或达到超时。它适合放在发布脚本里做串行控制:上一步没有收敛就不进入下一步,避免带着半成品状态继续操作。
退出码说明什么
超时退出码非零只代表「没等完」,不等于发布失败。慢启动应用、资源紧张导致新副本调度慢,都会让等待时间变长。正确做法是接到超时后去看对象状态与事件,判断是仍在正常推进还是真的卡住了。
基本信息
| 适用环境 | 任何 Kubernetes 发行版,支持无状态负载、有状态负载与守护进程 |
|---|---|
| 语法 | kubectl rollout status <资源>/<名称> [--timeout=...] |
| 默认行为 | 不设超时会一直等待 |
| 返回值 | 成功为 0,超时或判定失败为非零 |
| 信息来源 | 工作负载状态条件与副本统计 |
| 常用搭配 | 发布命令之后调用,再配合历史与回滚命令 |
典型使用场景
- 流水线门禁:发布后等待收敛,失败则中断后续步骤
- 人工值守:现场观察替换过程,判断是否需要立即回滚
- 批量发布:多个服务依次执行,确保前一个完成再进下一个
- 有状态负载升级:等待逐个成员完成更新,掌握整体节奏
- 验证发布结果:确认全部副本都是新版本并且处于就绪状态
- 故障演练:观察异常版本在什么阶段停住,验证监控与告警是否生效
常用示例
常用示例
kubectl rollout status deploy/web --timeout=180s # 加超时,避免脚本卡死
kubectl rollout status sts/db -n prod # 有状态负载按序观察
kubectl rollout status ds/node-agent # 守护进程按节点滚动
kubectl get rs -l app=web # 对照新旧副本集比例
kubectl describe deploy web | grep -A5 Conditions # 超时后看条件与原因超时后的排查分支
| 现象 | 可能原因 | 下一步 |
|---|---|---|
| 新副本一直未就绪 | 探针不通过或启动慢 | 看新副本日志与探针事件 |
| 副本数上不去 | 资源不足或约束不满足 | 看调度失败事件与节点余量 |
| 镜像拉取失败 | 凭据或地址问题 | 看拉取失败的具体错误文本 |
| 状态条件报推进超时 | 超过设定的推进时限 | 确认是慢还是真卡住 |
在流水线里必须显式设置超时,否则环境异常时任务会一直挂住,占满执行资源。
等待成功只说明副本已全部更新且就绪,不代表业务功能正常,发布后仍应有业务层验证。