深色模式
Game Day 组织
摘要:Game Day 是把混沌实验产品化的方式:有目标、有剧本、有观察员、有结论。本文给出准备、执行、收尾三个阶段的操作清单与可直接复制的日程模板。
适用环境
bash
# 参与人需具备实验环境的变更与查询权限
kubectl -n test auth can-i create podchaos
mkdir -p gameday/$(date +%F) && cd gameday/$(date +%F)1
2
3
2
3
操作步骤
第 1 步:定目标与范围(提前一周)
bash
cat > plan.md <<'EOF'
# Game Day 计划
日期:2026-10-20 14:00-16:00
目标:验证订单链路在依赖延迟下的行为
范围:test 命名空间,仅 demo / pay / rec 三个服务
不在范围:生产环境、数据库写入类故障
参与:主持人 1、执行 2、观察员 1、业务方 1
EOF1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
第 2 步:准备剧本(提前两天)
bash
cat > script.md <<'EOF'
## 场景 1(14:00-14:30)rec 服务 500
- 注入:VirtualService abort 500
- 假设:首页仍 200,推荐模块隐藏
- 中止:首页 5xx > 5% 立即停止
## 场景 2(14:30-15:00)pay 延迟 500ms
- 注入:NetworkChaos delay
- 假设:下单 P99 < 2s,无重试风暴
- 中止:下单成功率下降 > 2%
EOF1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
第 3 步:准备环境与回滚(提前一天)
bash
# 1. 确认基线指标可查
curl -sS --data-urlencode 'query=up{job="demo"}' http://127.0.0.1:9090/api/v1/query | jq -r '.data.result[].value[1]'
# 2. 准备一键中止
kubectl -n test create -f - <<'EOF' 2>/dev/null || true
EOF
echo "kubectl -n test delete podchaos,networkchaos,stresschaos --all" > abort.sh
chmod +x abort.sh && cat abort.sh
# 3. 通知相关方(值班、客服、业务)
echo "Game Day 14:00 开始,test 环境可能抖动" > notify.txt1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
第 4 步:按剧本执行
bash
# 每个场景:注入 -> 观察 5 分钟 -> 记录 -> 清理 -> 确认恢复
run(){ echo "$(date -u '+%H:%M:%S') 注入: $1"; kubectl apply -f "$1"; sleep 300; ./abort.sh; echo "$(date -u '+%H:%M:%S') 完成"; }
run rec-fault.yaml1
2
3
2
3
第 5 步:收尾与产出
bash
cat > report.md <<'EOF'
# Game Day 结论
| 场景 | 假设是否成立 | 发现 |
| --- | --- | --- |
| rec 500 | 不成立 | 主流程被拖垮,缺超时 |
| pay 延迟 | 成立 | P99 1.8s,符合预期 |
## 改进项
| 动作 | 负责人 | 截止 |
| --- | --- | --- |
| 为 rec 调用补 1s 超时 | @a | 2026-10-27 |
EOF1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
验证
bash
# 1. 所有注入对象已清理
kubectl -n test get podchaos,networkchaos,stresschaos 2>/dev/null | wc -l
# 2. 环境指标回到基线
curl -sS --data-urlencode 'query=up{job="demo"}' http://127.0.0.1:9090/api/v1/query | jq -r '.data.result[].value[1]'
# 3. 报告含结论与改进项
grep -c '负责人' report.md1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
常见坑
没有业务方参与
只有运维在场的 Game Day 无法判断"用户是否可接受"。务必拉一位能代表用户视角的人。
一天排太多场景
场景过多会导致每个都观察不彻底。一次 Game Day 3 个场景以内,每个留足 30 分钟。
未提前通知客服与值班
实验引起的告警会让值班人按真实事故处理,造成混乱。开始前必须通知并标注"演练中"。