离线安装

本篇文档描述如何离线安装 Chaos Mesh。

环境准备

在安装前,请先确保离线环境中已经安装 Docker 并部署了 Kubernetes 集群。如果环境尚未准备好,请参考以下链接安装 Docker 并部署 Kubernetes 集群:

准备安装文件

在离线安装 Chaos Mesh 前,你需要从有外网连接的机器上下载所有 Chaos Mesh 镜像和仓库压缩包,然后将下载的文件拷贝到离线环境中。

指定版本号

在有外网连接的机器上,设置 Chaos Mesh 的版本号为环境变量:

下载 Chaos Mesh 镜像

在有外网连接的机器上,通过已经设置的版本号拉取镜像:

  1. docker pull ghcr.io/chaos-mesh/chaos-mesh:${CHAOS_MESH_VERSION}
  2. docker pull ghcr.io/chaos-mesh/chaos-daemon:${CHAOS_MESH_VERSION}
  3. docker pull ghcr.io/chaos-mesh/chaos-dashboard:${CHAOS_MESH_VERSION}

保存镜像为 tar 包:

  1. docker save ghcr.io/chaos-mesh/chaos-mesh:${CHAOS_MESH_VERSION} > image-chaos-mesh.tar
  2. docker save ghcr.io/chaos-mesh/chaos-daemon:${CHAOS_MESH_VERSION} > image-chaos-daemon.tar
  3. docker save ghcr.io/chaos-mesh/chaos-dashboard:${CHAOS_MESH_VERSION} > image-chaos-dashboard.tar

离线安装 - 图1注意

如需模拟 DNS 故障(例如,使 DNS 响应返回随机的错误 IP 地址),请额外拉取 pingcap/coredns 镜像。

下载 Chaos Mesh 仓库压缩包

在有外网连接的机器上,下载 Chaos Mesh 的 zip 包:

拷贝文件

所有安装所需的文件下载完成后,请将这些文件拷贝到离线环境中:

  • image-chaos-mesh.tar
  • image-chaos-daemon.tar
  • image-chaos-dashboard.tar
  • chaos-mesh.zip

安装

将 Chaos Mesh 镜像的 tar 包和仓库的 zip 包拷贝到你的离线环境后,就可以按照以下步骤进行安装。

第 1 步:加载 Chaos Mesh 镜像

从 tar 包中加载镜像:

  1. docker load < image-chaos-mesh.tar
  2. docker load < image-chaos-daemon.tar
  3. docker load < image-chaos-dashboard.tar

第 2 步:推送镜像至 Registry

离线安装 - 图2注意

在推送镜像前,请确保离线环境中已经部署 Registry。如果尚未部署,请参考 Docker Registry 进行部署。

设置 Chaos Mesh 版本和 Registry 地址为环境变量:

标记镜像使其指向 Registry:

  1. export CHAOS_MESH_IMAGE=$DOCKER_REGISTRY/chaos-mesh/chaos-mesh:${CHAOS_MESH_VERSION}
  2. export CHAOS_DAEMON_IMAGE=$DOCKER_REGISTRY/chaos-mesh/chaos-daemon:${CHAOS_MESH_VERSION}
  3. export CHAOS_DASHBOARD_IMAGE=$DOCKER_REGISTRY/chaos-mesh/chaos-dashboard:${CHAOS_MESH_VERSION}
  4. docker image tag ghcr.io/chaos-mesh/chaos-mesh:${CHAOS_MESH_VERSION} $CHAOS_MESH_IMAGE
  5. docker image tag ghcr.io/chaos-mesh/chaos-daemon:${CHAOS_MESH_VERSION} $CHAOS_DAEMON_IMAGE
  6. docker image tag ghcr.io/chaos-mesh/chaos-dashboard:${CHAOS_MESH_VERSION} $CHAOS_DASHBOARD_IMAGE

推送镜像至 Registry:

  1. docker push $CHAOS_MESH_IMAGE
  2. docker push $CHAOS_DAEMON_IMAGE
  3. docker push $CHAOS_DASHBOARD_IMAGE

第 3 步:使用 Helm 安装

解压 Chaos Mesh 的 zip 包:

  1. unzip chaos-mesh.zip -d chaos-mesh && cd chaos-mesh

离线安装 - 图3注意

如果你正在安装在 Kubernetes v1.15(或更低版本)中安装 Chaos Mesh,请通过 kubectl create -f manifests/crd-v1beta1.yaml 手动安装 CRD。 具体细节,请参考 FAQ

创建命名空间:

  1. kubectl create ns chaos-testing

执行 Chaos Mesh 安装命令。在安装命令中,你需要指定 Chaos Mesh 的命名空间和各组件的镜像值:

  1. helm install chaos-mesh helm/chaos-mesh -n=chaos-testing --set images.registry=$DOCKER_REGISTRY

验证安装

要查看 Chaos Mesh 的运行情况,请执行以下命令:

  1. kubectl get po -n chaos-testing

以下是预期输出:

  1. NAME READY STATUS RESTARTS AGE
  2. chaos-controller-manager-69fd5c46c8-xlqpc 3/3 Running 0 2d5h
  3. chaos-daemon-jb8xh 1/1 Running 0 2d5h
  4. chaos-dashboard-98c4c5f97-tx5ds 1/1 Running 0 2d5h

如果你的实际输出与预期输出相符,表示 Chaos Mesh 已经成功安装。

离线安装 - 图4注意

如果实际输出的 STATUS 状态不是 Running,则需要运行以下命令查看 Pod 的详细信息,然后依据错误提示排查并解决问题。

  1. # 以 chaos-controller 为例
  2. kubectl describe po -n chaos-testing chaos-controller-manager-69fd5c46c8-xlqpc

离线安装 - 图5注意

如果手动关闭了 leader-electionchaos-controller-manager 应该只有 1 个实例。

  1. NAME READY STATUS RESTARTS AGE
  2. chaos-controller-manager-69fd5c46c8-xlqpc 1/1 Running 0 2d5h
  3. chaos-daemon-jb8xh 1/1 Running 0 2d5h
  4. chaos-dashboard-98c4c5f97-tx5ds 1/1 Running 0 2d5h

运行 Chaos 实验

验证安装完成后,你可以运行一个 Chaos 实验来体验 Chaos Mesh 的功能。

请参考运行试验进行创建。成功创建实验后,你可以通过 Chaos Dashboard 观察实验的运行状态。