Agent Skills
返回列表
🔒

Kubernetes 回滚执行手册

IT 运维与安全 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/kubernetes-rollback-runbook-3

技能介绍

问题背景:当 Deployment 失控时,手动回滚有多危险?

在 Kubernetes 集群中,一次错误镜像发布或配置变更可能导致服务中断。手动回滚不仅依赖工程师的即时判断,还容易因命令拼写错误、状态检查遗漏等问题延长故障时间。尤其当多个副本处于 progressing 状态时,仅靠 kubectl rollout status 无法快速定位阻塞原因。

技能如何工作:从状态监控到事件响应的闭环流程

该技能通过以下机制实现结构化回滚:

  • 回滚流程协调:结合 kubectl rollout undo 和 client-go 库,自动执行版本回退并验证资源版本
  • 事件响应集成:当回滚卡住或超时时,通过 PagerDuty Events API v2 触发告警,附带当前 Deployment 的 conditions 和 observedGeneration 信息
  • 状态持续追踪:基于 apps/v1 Deployment API 持续监控 rolloutStatus,直到所有副本达到 available 状态或触发最大重试阈值

关键步骤包括:

  1. 获取目标 Deployment 的 spec.replicas 和 status.observedGeneration
  2. 调用 RollbackToRevision 方法执行原子化版本切换
  3. 每 5 秒轮询一次 rolloutStatus,累计 3 次异常则触发 PagerDuty 事件

适用边界与注意事项

  • 仅适用于通过 Deployment 控制器管理的工作负载,不支持 StatefulSet 或自定义控制器
  • 需要预先配置 Docker 环境(见 Docker 官方文档)以支持容器化调试
  • 对于需要人工介入的复杂故障(如存储卷损坏),仍需手动执行 kubectl describe 排查
  • 回滚操作会覆盖当前配置,建议在测试环境验证回滚策略后再应用到生产集群

该技能本质是 kubectl 和 client-go 的自动化封装,适合作为 CI/CD 流水线中的回滚执行器,而非替代完整的发布策略设计。

使用场景

  • 当滚动发布卡住时,需要自动执行回滚并上报 PagerDuty
  • CI 流水线需在 deploy 后验证 rollout 状态,失败则自动 undo
  • 编写 client-go 控制器时需处理 Deployment 回滚逻辑
  • 集群故障期间需通过 API 实时监控副本可用状态并触发告警

适合人员

  • 负责发布流程的 SRE,需要标准化回滚与告警机制
  • 编写 GitOps 工具的开发者,需集成 rollout 状态检测
  • 开发 client-go 控制器的 Golang 工程师,处理版本回退
  • 管理多集群的平台工程师,需统一回滚与事件响应策略