4. 环境准备:Minikube/Kind集群搭建、kubectl配置、必备工具安装

本章聚焦于搭建混沌工程实验所需的底层基础设施。我们将依次完成本地 Kubernetes 集群的创建、kubectl 命令行工具的配置,以及核心工具链(Helm、Chaos Mesh、Litmus)的安装。一个稳定、可复现的实验环境是后续故障注入与 IDP 隔离验证的基石。

4.1 本地集群选型:Minikube vs Kind

对于本地开发和混沌实验,Minikube 和 Kind 是最主流的两种选择。下表从关键维度对比两者的差异,帮助你根据实验场景做出选择。

对比维度MinikubeKind (Kubernetes in Docker)
底层驱动虚拟机(VirtualBox/HyperKit)或 DockerDocker 容器作为节点
集群启动速度较慢(需启动完整 VM)极快(秒级启动容器节点)
资源占用较高(VM 开销)较低(共享 Docker 守护进程)
多节点支持支持(需指定参数)原生支持,配置简单
持久化存储内置 CSI 驱动,支持 PV需额外配置,适合无状态实验
适用场景模拟真实节点环境、存储测试CI/CD 集成、快速原型、多节点拓扑
推荐选择: 本课程后续的故障注入实验推荐使用 Kind。其轻量、快速、多节点易配置的特性,能显著缩短环境准备时间,让你更专注于混沌实验本身。若你的实验涉及节点级别的故障(如节点宕机),则 Minikube 的 VM 模式更贴近生产。

4.2 集群搭建与 kubectl 配置

4.2.1 使用 Kind 创建多节点集群

Kind 通过 YAML 配置文件定义集群拓扑。以下配置将创建一个包含 1 个控制平面节点和 3 个工作节点的集群,适合模拟 Deployment 故障隔离场景。

# kind-cluster.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
  - role: control-plane
  - role: worker
  - role: worker
  - role: worker

执行以下命令创建集群并验证节点状态:

# 创建集群
kind create cluster --config kind-cluster.yaml --name chaos-cluster

# 验证节点
kubectl get nodes -o wide

# 预期输出:4 个节点均为 Ready 状态
NAME                         STATUS   ROLES           AGE   VERSION
chaos-cluster-control-plane  Ready    control-plane   2m    v1.27.3
chaos-cluster-worker         Ready    <none>          1m    v1.27.3
chaos-cluster-worker2        Ready    <none>          1m    v1.27.3
chaos-cluster-worker3        Ready    <none>          1m    v1.27.3

4.2.2 kubectl 配置与上下文管理

Kind 创建集群后会自动更新 kubeconfig。建议为不同实验集群设置独立的上下文,避免操作混淆。

# 查看当前上下文
kubectl config current-context

# 设置默认命名空间(后续实验统一使用 chaos-ns)
kubectl config set-context --current --namespace=chaos-ns

# 创建实验命名空间
kubectl create ns chaos-ns
避坑提示: 若同时管理多个集群,务必在执行故障注入前通过 kubectl config use-context 切换到正确的集群。在错误的集群上执行 Chaos Mesh 实验可能导致生产环境意外中断。

4.3 必备工具安装

本节安装的三个工具构成了混沌工程实验的完整工具链:Helm 作为包管理器,Chaos Mesh 作为故障注入引擎,Litmus 作为混沌实验编排平台。

4.3.1 Helm 安装

Helm 用于简化 Kubernetes 应用的部署和管理。我们使用 Helm 3 安装 Chaos Mesh 和 Litmus。

# 下载并安装 Helm(Linux/macOS)
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

# 验证版本
helm version --short

# 添加 Chaos Mesh 和 Litmus 的 Helm 仓库
helm repo add chaos-mesh https://charts.chaos-mesh.org
helm repo add litmus https://litmuschaos.github.io/litmus-helm/
helm repo update

4.3.2 Chaos Mesh 安装

Chaos Mesh 是一个开源的云原生混沌工程平台,支持 Pod 故障、网络延迟、文件系统异常等多种故障类型。

# 安装 Chaos Mesh(指定命名空间)
helm install chaos-mesh chaos-mesh/chaos-mesh \
  --namespace=chaos-mesh \
  --create-namespace \
  --set chaosDaemon.runtime=containerd \
  --set chaosDaemon.socketPath=/run/containerd/containerd.sock

# 验证安装
kubectl get pods -n chaos-mesh -l app.kubernetes.io/instance=chaos-mesh

# 预期输出:chaos-controller-manager、chaos-daemon、chaos-dashboard 均为 Running
关键参数说明: chaosDaemon.runtime 和 chaosDaemon.socketPath 必须与集群的容器运行时一致。Kind 默认使用 containerd,因此上述配置是标准选项。若使用 Docker 作为运行时,需调整为 runtime=docker 和 socketPath=/var/run/docker.sock。

4.3.3 Litmus 安装

Litmus 提供更高级的混沌实验编排能力,支持实验工作流、调度和报告。我们安装 Litmus 的核心组件:

# 安装 Litmus(包含前端、后端和混沌执行器)
helm install litmus litmus/litmus \
  --namespace=litmus \
  --create-namespace \
  --set portal.frontend.service.type=NodePort

# 验证安装
kubectl get pods -n litmus -l app.kubernetes.io/instance=litmus

# 获取 Litmus Portal 访问地址
kubectl get svc -n litmus litmus-frontend-service -o jsonpath='{.spec.ports[0].nodePort}'

4.4 环境验证与工具架构总览

安装完成后,我们通过一张架构图来理解各组件之间的关系,并执行快速验证脚本确保环境就绪。

混沌工程实验环境架构 Kind 集群 (chaos-cluster) Control Plane Worker 1 Worker 2 Worker 3 混沌工程工具链 Chaos Mesh 故障注入引擎 Litmus 实验编排平台 Helm 包管理器 用户接口与配置 kubectl CLI Chaos Dashboard Litmus Portal

环境就绪后,执行以下快速验证脚本,确保所有组件正常运行:

#!/bin/bash
# 环境验证脚本

echo "=== 1. 集群节点状态 ==="
kubectl get nodes

echo -e "\n=== 2. Chaos Mesh 组件 ==="
kubectl get pods -n chaos-mesh

echo -e "\n=== 3. Litmus 组件 ==="
kubectl get pods -n litmus

echo -e "\n=== 4. Helm 仓库列表 ==="
helm repo list

echo -e "\n=== 5. 实验命名空间 ==="
kubectl get ns chaos-ns
验证通过标准: 所有节点状态为 Ready,Chaos Mesh 和 Litmus 的 Pod 均为 Running 状态,Helm 仓库列表中包含 chaos-mesh 和 litmus,且 chaos-ns 命名空间已存在。至此,环境准备全部完成,可以进入下一章的故障注入实验。