使用 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-mesh
命名空间下,也可以指定任意命名空间安装 Chaos Mesh:
kubectl create ns chaos-mesh
第 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-mesh
containerd
helm install chaos-mesh chaos-mesh/chaos-mesh -n=chaos-mesh --set chaosDaemon.runtime=containerd --set chaosDaemon.socketPath=/run/containerd/containerd.sock
K3s
helm install chaos-mesh chaos-mesh/chaos-mesh -n=chaos-mesh --set chaosDaemon.runtime=containerd --set chaosDaemon.socketPath=/run/k3s/containerd/containerd.sock
CRI-O
如需安装特定版本的 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 --set controllerManager.replicaCount=1
手动关闭该特性。
验证安装
要查看 Chaos Mesh 的运行情况,请执行以下命令:
kubectl get po -n chaos-mesh
以下是预期输出:
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-mesh 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-mesh --set dashboard.create=false
如果想了解更多的值及其相关的用法,请参考所有的值。
目前,Helm 在升级时不会应用最新的 CustomResourceDefinition (CRD),这可能会导致一些错误的发生。为了避免这种情况,请手动应用最新的 CRD:
卸载 Chaos Mesh
如要卸载 Chaos Mesh,请执行以下命令:
helm uninstall chaos-mesh -n chaos-mesh
常见问题解答
如何安装最新版本的 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-mesh
如何关闭安全模式
安全模式是默认启用的。如需关闭,请在安装或升级时指定 dashboard.securityMode
为 false
:
如何持久化 Chaos Dashboard 数据
默认 Chaos Dashboard 组件使用 SQLite
作为后端存储,如果没有为 Chaos Dashboard 配置持久卷 (PV) ,Chaos Dashboard 在发生重启后,数据会出现丢失。为了避免数据丢失,可以参考持久化 Chaos Dashboard 数据 文档,为 Chaos Dashboard 配置持久卷或者设置 MySQL
、Postgres
作为后端存储。