使用 Helm 安装(生产推荐)
本篇文档描述如何在生产环境安装 Chaos Mesh。
环境准备
在安装之前,请先确保环境中已经安装 Helm。
如要查看 Helm 是否已经安装,请执行如下命令:
helm version
以下是预期输出:
version.BuildInfo{Version:"v3.5.4", GitCommit:"1b5edb69df3d3a08df77c9902dc17af864ff05d1", GitTreeState:"dirty", GoVersion:"go1.16.3"}
如果你的实际输出与预期输出一致,表示 Helm 已经成功安装。
本文中的命令将会使用 Helm v3 来操作 Chaos Mesh。如果你的环境中 Helm 的版本为 v2,请参考将 Helm v2 迁移到 v3或按照 v2 的格式进行修改。
使用 Helm 安装
第 1 步:添加 Chaos Mesh 仓库
在 Helm 仓库中添加 Chaos Mesh 仓库:
helm repo add chaos-mesh https://charts.chaos-mesh.org
第 2 步:查看可以安装的 Chaos Mesh 版本
执行如下命令显示可以安装的 charts:
helm search repo chaos-mesh
上述命令会输出最新发布的 chart,如需安装历史版本,请执行如下命令查看所有的版本:
helm search repo chaos-mesh -l
在上述命令完成后,接下来开始安装 Chaos Mesh。
第 3 步:创建安装 Chaos Mesh 的命名空间
推荐将 Chaos Mesh 安装在 chaos-testing
命名空间下,也可以指定任意命名空间安装 Chaos Mesh:
kubectl create ns chaos-testing
第 4 步:在不同环境下安装
如果你正在安装在 Kubernetes v1.15(或更低版本)中安装 Chaos Mesh,请手动安装 CRD。 具体细节,请参考 FAQ。
由于不同容器运行时的守护进程所监听的 socket path 不同,在安装时需要设置不同的值,可以根据不同的环境来运行如下的安装命令。
Docker
# 默认为 /var/run/docker.sock
helm install chaos-mesh chaos-mesh/chaos-mesh -n=chaos-testing
containerd
helm install chaos-mesh chaos-mesh/chaos-mesh -n=chaos-testing --set chaosDaemon.runtime=containerd --set chaosDaemon.socketPath=/run/containerd/containerd.sock
K3s
helm install chaos-mesh chaos-mesh/chaos-mesh -n=chaos-testing --set chaosDaemon.runtime=containerd --set chaosDaemon.socketPath=/run/k3s/containerd/containerd.sock
CRI-O
helm install chaos-mesh chaos-mesh/chaos-mesh -n=chaos-testing --set chaosDaemon.runtime=crio --set chaosDaemon.socketPath=/var/run/crio/crio.sock --version 2.1.8
如需安装特定版本的 Chaos Mesh,请在 helm install
后添加 --version x.y.z
参数,如 helm install chaos-mesh chaos-mesh/chaos-mesh -n=chaos-mesh --version 2.0.7
。
为了保证高可用性,Chaos Mesh 默认开启了 leader-election
特性。如果不需要这个特性,请通过 --set controllerManager.leaderElection.enabled=false
手动关闭该特性。
验证安装
要查看 Chaos Mesh 的运行情况,请执行以下命令:
kubectl get po -n chaos-testing
以下是预期输出:
NAME READY STATUS RESTARTS AGE
chaos-controller-manager-69fd5c46c8-xlqpc 3/3 Running 0 2d5h
chaos-daemon-jb8xh 1/1 Running 0 2d5h
chaos-dashboard-98c4c5f97-tx5ds 1/1 Running 0 2d5h
如果你的实际输出与预期输出相符,表示 Chaos Mesh 已经成功安装。
如果实际输出的 STATUS
状态不是 Running
,则需要运行以下命令查看 Pod 的详细信息,然后依据错误提示排查并解决问题。
# 以 chaos-controller 为例
kubectl describe po -n chaos-testing chaos-controller-manager-69fd5c46c8-xlqpc
如果手动关闭了 leader-election
,chaos-controller-manager
应该只有 1 个实例。
NAME READY STATUS RESTARTS AGE
chaos-controller-manager-69fd5c46c8-xlqpc 1/1 Running 0 2d5h
chaos-daemon-jb8xh 1/1 Running 0 2d5h
chaos-dashboard-98c4c5f97-tx5ds 1/1 Running 0 2d5h
运行 Chaos 实验
验证安装完成后,你可以运行一个 Chaos 实验来体验 Chaos Mesh 的功能。
请参考运行试验进行创建。成功创建实验后,你可以通过 Chaos Dashboard 观察实验的运行状态。
升级 Chaos Mesh
如要升级 Chaos Mesh,请执行如下命令:
helm upgrade chaos-mesh chaos-mesh/chaos-mesh
如需升级至特定版本的 Chaos Mesh,请在 helm upgrade
后添加 --version x.y.z
参数,如 helm upgrade chaos-mesh chaos-mesh/chaos-mesh -n=chaos-mesh --version 2.0.7
。
如在非 Docker 环境下进行升级,需根据在不同环境下安装所述添加相应的参数。
如要修改配置,请根据需要设置不同的值。例如,如下命令会升级并卸载 chaos-dashboard
:
helm upgrade chaos-mesh chaos-mesh/chaos-mesh -n=chaos-testing --set dashboard.create=false
如果想了解更多的值及其相关的用法,请参考所有的值。
目前,Helm 在升级时不会应用最新的 CustomResourceDefinition (CRD),这可能会导致一些错误的发生。为了避免这种情况,请手动应用最新的 CRD:
curl -sSL https://mirrors.chaos-mesh.org/v2.1.8/crd.yaml | kubectl create -f -
卸载 Chaos Mesh
如要卸载 Chaos Mesh,请执行以下命令:
helm uninstall chaos-mesh -n chaos-testing
常见问题解答
如何安装最新版本的 Chaos Mesh
Chaos Mesh 仓库中的 helm/chaos-mesh/values.yaml
定义了最新版本(master 分支)的镜像。若想安装最新版本的 Chaos Mesh,请执行以下命令:
# 克隆仓库
git clone https://github.com/chaos-mesh/chaos-mesh.git
cd chaos-mesh
helm install chaos-mesh helm/chaos-mesh -n=chaos-testing
如何关闭安全模式
安全模式是默认启用的。如需关闭,请在安装或升级时指定 dashboard.securityMode
为 false
:
helm install chaos-mesh chaos-mesh/chaos-mesh -n=chaos-testing --set dashboard.securityMode=false --version 2.1.8
如何持久化 Chaos Dashboard 数据
默认 Chaos Dashboard 组件使用 SQLite 作为后端存储,如果没有为 Chaos Dashboard 配置 PV(Persistent Volumes)
,Chaos Dashboard 在发生重启后,数据会出现丢失。为了避免数据丢失,可以参考持久化 Chaos Dashboard 数据 文档,为 Chaos Dashboard 配置 PV
或者设置 MySQL
、Postgres
作为后端存储。