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
提示:如果使用 Kind 或 Minikube 本地集群,请确保 kube-apiserver 的 --enable-admission-plugins 包含 MutatingAdmissionWebhook 和 ValidatingAdmissionWebhook,否则 LitmusChaos 的 Webhook 无法正常工作。

2.2 Helm 安装与仓库配置

LitmusChaos 官方推荐使用 Helm Chart 进行部署。以下步骤在已有 Helm 环境的节点上执行:

  1. 添加 LitmusChaos Helm 仓库
    helm repo add litmuschaos https://litmuschaos.github.io/litmus-helm/
    helm repo update
  2. 搜索可用版本
    helm search repo litmuschaos --versions

    输出中会列出 litmuschaos/litmus 和 litmuschaos/litmus-infra 等 Chart。本课程使用 litmuschaos/litmus 作为 Operator 部署入口。

  3. 创建命名空间
    kubectl create namespace litmus
  4. 安装 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 指标暴露,便于后续监控。
注意:如果集群已安装旧版 LitmusChaos(v1.x),请先执行 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。

LitmusChaos 环境部署架构 Kubernetes 集群 控制平面 kube-apiserver kube-controller-manager kube-scheduler 工作节点 kubelet kube-proxy 容器运行时 litmus 命名空间 chaos-operator chaos-exporter frontend / server 部署关键点 1. Helm 安装时指定 --namespace litmus,所有组件隔离部署。 2. chaos-operator 通过 CRD 监听 ChaosEngine 资源,驱动故障注入。 3. chaos-exporter 将实验指标暴露为 /metrics,供 Prometheus 抓取。 4. frontend 提供 Web UI,server 负责实验调度与结果存储。

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 验证指标端点