
litmuschaos/ansible-runnerLitmus 是一个 Kubernetes 原生的混沌工程工具集,旨在通过模拟真实世界故障场景,帮助云原生开发者和 SRE 团队验证系统韧性、发现潜在弱点,并提升生产环境中 Kubernetes 部署的稳定性。Litmus 基于 Kubernetes 自定义资源定义(CRD)构建,提供声明式的混沌实验配置与执行能力,实现故障注入、编排与监控的全流程自动化。
ChaosExperiment)、执行引擎(ChaosEngine)和结果监控(ChaosResult),与 Kubernetes 控制平面深度集成,支持声明式配置与生命周期管理。ChaosResult CRD),集成 Prometheus 指标,支持故障影响可视化与结果分析。pod-delete、node-cpu-hog),支持自定义故障场景(通过编写 CRD 或扩展实验镜像)。kubectl 命令行工具(已配置集群访问权限)。bash# 添加 Litmus 仓库 helm repo add litmuschaos [***] helm repo update # 安装 Litmus 核心组件(混沌控制器、CRD、实验模板) helm install litmus litmuschaos/litmus --namespace litmus --create-namespace
bash# 应用 Litmus CRD 与控制器部署清单 kubectl apply -f [***]
ChaosExperiment CRD)| 参数路径 | 类型 | 说明 | 示例值 |
|---|---|---|---|
spec.targets.kind | string | 目标资源类型(如 Pod、Node、Deployment) | Pod |
spec.targets.name | string | 目标资源名称(支持通配符或标签选择器) | nginx-deploy-xxxx |
spec.chaosDuration | string | 故障持续时间(如 30s、5m) | 60s |
spec.faults[0].name | string | 故障类型(如 pod-delete、network-latency) | pod-delete |
spec.faults[0].params | map | 故障参数(如网络延迟时长、CPU 压力值) | {"duration": "30s"} |
ChaosEngine CRD)| 参数路径 | 类型 | 说明 | 示例值 |
|---|---|---|---|
spec.appinfo.appns | string | 目标应用命名空间 | default |
spec.appinfo.applabel | string | 目标应用标签(键值对格式) | app=nginx |
spec.experiments[0].name | string | 引用的 ChaosExperiment 名称 | pod-delete |
spec.experiments[0].rank | int | 实验执行优先级(数值越小优先级越高,支持串行执行) | 1 |
Litmus 控制器(litmus-controller)支持通过环境变量调整运行参数,常见配置如下:
| 环境变量名 | 说明 | 默认值 |
|---|---|---|
WATCH_NAMESPACE | 控制器监控的命名空间(* 表示所有) | * |
LOG_LEVEL | 日志级别(info/debug) | info |
METRICS_PORT | 指标暴露端口 | 8080 |
通过 Helm 安装 Litmus 到 litmus 命名空间:
bashhelm install litmus litmuschaos/litmus \ --namespace litmus \ --create-namespace \ --set controller.logLevel=debug # 可选:调整日志级别为 debug
ChaosExperiment CRD(定义故障类型):yaml# pod-delete-experiment.yaml apiVersion: litmuschaos.io/v1alpha1 kind: ChaosExperiment metadata: name: pod-delete namespace: litmus spec: targets: - kind: Pod name: "" # 留空表示通过标签选择 label: "app=nginx" # 目标 Pod 标签 chaosDuration: "60s" # 故障持续 60 秒 faults: - name: pod-delete params: - name: duration value: "30s" # 单次 Pod 驱逐后,30 秒内不再重复驱逐
应用配置:
bashkubectl apply -f pod-delete-experiment.yaml
ChaosEngine CRD(执行实验):yaml# nginx-pod-delete-engine.yaml apiVersion: litmuschaos.io/v1alpha1 kind: ChaosEngine metadata: name: nginx-pod-delete namespace: default spec: appinfo: appns: "default" # 目标应用命名空间 applabel: "app=nginx" # 目标应用标签 experiments: - name: pod-delete # 引用上述 ChaosExperiment 名称 rank: 1 # 优先级 1(立即执行)
应用配置并启动实验:
bashkubectl apply -f nginx-pod-delete-engine.yaml
ChaosResult CRD 状态:bashkubectl get chaosresult nginx-pod-delete -n default -o yaml
结果中 status.verdict 字段为 Pass 表示实验执行成功,status.failureReason 会记录失败原因(如目标 Pod 不存在)。
pod-delete 而非 node-failure)。ClusterRole)以操作节点、网络等资源,生产环境需限制最小权限范围。manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务