2. LitmusChaos 环境准备:Kubernetes 集群要求、Helm 安装、Operator 部署
在开始 Pod 故障注入演练之前,必须确保底层 Kubernetes 集群满足 LitmusChaos 的运行条件,并正确安装 Operator 组件。本章将依次说明集群最低要求、Helm 仓库配置以及 Operator 的部署验证步骤。
2.1 Kubernetes 集群要求
LitmusChaos 依赖 Kubernetes 的 RBAC、Custom Resource Definitions(CRD)以及容器运行时接口。下表列出了生产级演练的最低版本与推荐配置:
| 项目 | 最低版本 / 规格 | 推荐版本 / 规格 | 说明 |
|---|---|---|---|
| Kubernetes | v1.20 | v1.27+ | 需启用 RBAC 与 Admission Webhook |
| Helm | v3.8 | v3.14+ | 仅支持 Helm 3,不支持 Tiller |
| CPU(控制平面) | 2 核 | 4 核 | 用于运行 Operator 与 Chaos-Exporter |
| 内存(控制平面) | 4 GB | 8 GB | CRD 数量较多时需额外预留 |
| 存储 | 20 GB 可用 | 50 GB SSD | 用于日志、事件与实验 Artifact |
| 网络 | 集群内 Pod 互通 | CNI 支持 NetworkPolicy | 故障注入需访问目标 Pod IP |
kube-apiserver 的 --enable-admission-plugins 包含 MutatingAdmissionWebhook 和 ValidatingAdmissionWebhook,否则 LitmusChaos 的 Webhook 无法正常工作。
2.2 Helm 安装与仓库配置
LitmusChaos 官方推荐使用 Helm Chart 进行部署。以下步骤在已有 Helm 环境的节点上执行:
- 添加 LitmusChaos Helm 仓库
helm repo add litmuschaos https://litmuschaos.github.io/litmus-helm/ helm repo update - 搜索可用版本
helm search repo litmuschaos --versions输出中会列出
litmuschaos/litmus和litmuschaos/litmus-infra等 Chart。本课程使用litmuschaos/litmus作为 Operator 部署入口。 - 创建命名空间
kubectl create namespace litmus - 安装 LitmusChaos Operator
helm install litmus litmuschaos/litmus \ --namespace litmus \ --set portal.frontend.service.type=ClusterIP \ --set chaos-exporter.enabled=true参数说明:
portal.frontend.service.type=ClusterIP:内部访问,生产环境建议配合 Ingress。chaos-exporter.enabled=true:启用 Prometheus 指标暴露,便于后续监控。
helm uninstall litmus -n litmus 并清理遗留 CRD,再执行上述安装命令。新旧版本 CRD 不兼容。
2.3 Operator 部署验证
安装完成后,通过以下命令确认所有 Pod 处于 Running 状态:
kubectl get pods -n litmus
预期输出类似:
NAME READY STATUS RESTARTS AGE
litmus-chaos-operator-7d8f9c6b9f-abc12 1/1 Running 0 2m
litmus-chaos-exporter-5c4d8f7b9d-def34 1/1 Running 0 2m
litmus-frontend-6b7c8d9e0f-ghi56 1/1 Running 0 2m
litmus-server-0 1/1 Running 0 2m
litmus-subscriber-9a8b7c6d5e-jkl78 1/1 Running 0 2m
同时检查 CRD 是否注册成功:
kubectl get crd | grep litmus
应至少包含 chaosengines.litmuschaos.io、chaosexperiments.litmuschaos.io、chaosresults.litmuschaos.io 三个核心 CRD。
2.4 验证 Helm Release 与 CRD 完整性
使用 Helm 命令确认 release 状态:
helm list -n litmus
输出应显示 litmus 的 STATUS 为 deployed。若 STATUS 为 failed,可通过 helm get manifest litmus -n litmus | kubectl apply -f - 手动重试资源创建。
最后,验证 CRD 的 API 版本是否与 Helm Chart 一致:
kubectl get crd chaosengines.litmuschaos.io -o jsonpath='{.spec.versions[*].name}'
预期输出 v1alpha1(或 v1beta1,取决于 Chart 版本)。如果版本为空或缺失,说明 CRD 安装不完整,需重新执行 Helm 安装命令。
- ✅ Kubernetes 集群版本 ≥ v1.20,RBAC 与 Webhook 已启用
- ✅ Helm v3 已安装,litmuschaos 仓库已添加并更新
- ✅ litmus 命名空间已创建,Operator 所有 Pod 处于 Running
- ✅ 三个核心 CRD(ChaosEngine、ChaosExperiment、ChaosResult)已注册
- ✅ chaos-exporter 已启用,可通过
kubectl port-forward验证指标端点