下载工作台
项目运维与部署

故障演练基础

试读上半部分 · 解锁后可读全文

第 6 章 · 故障演练基础

本章目标:通过 注入故障 → 发现 → 定位 → 恢复 → 复盘 验证监控与 SOP;在 staging 完成 4 类剧本;为 ch14 综合演练日 打基础。

学时建议:2.5~3 小时(含 2 小时组队跟练)

前置ops-deploy ch04 回滚;ch05 SOP;ch07 告警(可先配基础规则再练)。

安全声明:仅在 staging-app 或授权测试环境演练;禁止未审批对 prod 注入故障。


6.1 场景说明

项目内容
背景demo-mall 监控已部署,但团队从未验证「告警能否叫醒人、回滚能否 15min 内完成」
你的角色演练参与者:注入员 / On-call / 记录员(轮换)
本章任务完成剧本一(Pod 崩溃)、剧本二(错误配置)各一次;提交故障报告
约束演练前通知相关方;T+30min 必须恢复 staging 基线
成功标准MTTR 有记录;改进项 ≥2 条写入 backlog

6.2 学完你能

能力验收标准
演练分类技术/流程/红蓝三类及频率
执行剧本Pod 删除、错配置、依赖超时至少 2 个
记录时间线故障报告含发现时间、MTTR
验证监控告警是否在预期时间内触发
复盘改进输出 2 条可执行改进项
角色协作注入/on-call/复核分工清晰

6.3 演练价值与类型

类型目的建议频率
技术演练验证回滚、扩容、备份每月
流程演练验证 On-call、升级、沟通每季
红蓝对抗安全/混沌工程每年
收益说明
验证告警规则非「摆设」
熟练回滚压力下仍能操作 应用部署 → 回滚
完善 SOP发现 ch05 文档缺口
合规等保「应急预案演练」佐证

6.4 演练前检查(全员)

  • [ ] 已通知 staging 使用方(研发/测试)
  • [ ] 运维 → 监控告警 Dashboard 就绪
  • [ ] 回滚命令预演:kubectl rollout undo ... -n staging-app
  • [ ] 确认当前 Namespace = staging-app(非 prod)
  • [ ] 记录员打开故障报告模板
  • [ ] 设定演练硬停止时间 T+30min

6.5 逐步跟练 · 剧本一:Pod 崩溃与自愈(约 40 分钟)

注入(注入员执行):

kubectl delete pod -l app=demo-api -n staging-app --force --grace-period=0

On-call 预期动作

  1. 收到副本数下降 / Pod 不可用告警(若未告警 → 改进 ch07)
  2. 系统容器 确认新 Pod 创建中
  3. 若 2min 未恢复,查 Events;必要时 应用部署 看 Deployment
  4. 一般 无需人工干预,Kubernetes 控制器重建 Pod

预期时间线

时间事件
T+0Pod Terminating
T+30s副本数下降告警
T+1m新 Pod Pending/Running
T+2mreadiness 通过,流量恢复

你应该看到应用部署 Available 短暂下降后恢复;MTTR 通常 < 3min。

记录字段:发现时间、是否告警、MTTR、根因(预期内自愈)。


6.6 逐步跟练 · 剧本二:错误配置上线(约 50 分钟)

注入:修改 staging ConfigMap DB_HOST 为无效值,滚动重启 demo-api(衔接 ch02 故意犯错)。

On-call 预期动作

  1. 新 Pod readiness 失败 → 旧 Pod 仍服务(若 maxSurge 允许)
  2. 或错误率上升告警
  3. 决策:回滚 ConfigMapkubectl rollout undo
  4. 验证 /health 与下单冒烟

你应该看到

  • 若 readiness 正确:流量不伤及全量用户
  • 若 readiness 缺失:502 告警 → 必须 ch04 补探针

改进项示例

  1. CI 增加 env 校验(dev 分支不得含 prod hostname)
  2. staging 强制 readiness 检查本地 /ready

以下内容需解锁后阅读

试读已结束。解锁本章 ¥5.00,或开通年度会员畅读全部教程。
年度会员 ¥199.00/年; 小紫 AI 工作台有效会员 ¥99.00/年

正文仅在服务端鉴权后下发,未付费无法获取下半部分内容。