混沌实验设计、爆炸半径与止损
混沌工程不是“随便杀个 Pod 看看”,而是先用稳态假设定义正常,再注入故障验证系统是否维持正常。每个实验必须有爆炸半径、持续时间和中止条件;没有中止条件的实验不能上生产。
从测试环境开始,再到生产的小比例流量。生产实验必须提前通知、冻结无关变更,并指定 IC。
实验设计表:
| 字段 | 示例 |
|---|---|
| 稳态假设 | 单节点故障时 P99 < 500ms,错误率 < 0.1% |
| 注入方法 | 每 2 分钟杀掉一个 payment Pod |
| 爆炸半径 | namespace=checkout,label app=payment,最多 1 个 Pod |
| 持续时间 | 10 分钟 |
| 中止条件 | 错误率 > 1% 或 P99 > 1s 持续 2 分钟 |
| 恢复方式 | 停止实验,等待 Deployment 自动恢复 |
Chaos Mesh PodChaos:
apiVersion: chaos-mesh.org/v1alpha1
kind: PodChaos
metadata:
name: payment-pod-kill
namespace: chaos-testing
spec:
action: pod-kill
mode: one
selector:
namespaces: [checkout]
labelSelectors:
app: payment
scheduler:
cron: "@every 2m"
网络延迟实验:
apiVersion: chaos-mesh.org/v1alpha1
kind: NetworkChaos
metadata:
name: payment-delay
namespace: chaos-testing
spec:
action: delay
mode: one
selector:
namespaces: [checkout]
labelSelectors:
app: payment
delay:
latency: "200ms"
jitter: "50ms"
duration: "5m"
中止阈值:
| 指标 | 阈值 | 动作 |
|---|---|---|
| 错误率 | > 1% 持续 2 分钟 | 立即停止实验 |
| P99 延迟 | > 1s 持续 2 分钟 | 立即停止实验 |
| 数据库连接 | > 80% | 立即停止实验 |
| 人工叫停 | 任何人 | 立即停止 |
合上页面,先回答,再展开对照。