暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

离线安装ChaosMesh

IT那活儿 2024-06-21
178

点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!  



最近要在一个离线环境测试ChaosMesh,安装官方的文档操作中也有离线相关内容,但是不符合实际情况,实际情况是主机是网络隔离的,所以依赖的组件都要离线安装。




下载相关安装包

找一台和目标主机操作系统一样的主机, 这里我们选择“BigCloud Enterprise Linux For Euler release 21.10 (LTS-SP2)”,

1.1 设置yum源

```bash
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
```

修改 etc/yum.repos.d/docker-ce.repo:
```bash
sed -i 's/$releasever/8/g' etc/yum.repos.d/docker-ce.repo
`
``

1.2 下载 docker-ce的相关rpm包

```bash
yum download docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin container-selinux libcgroup
`
``

1.3 下载kind相关包

```
[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://mirror.ghproxy.com/https://github.com/kubernetes-sigs/kind/releases/download/v0.20.0/kind-linux-amd64

docker pull dockerproxy.com/kindest/node:v1.27.3
docker save -o kind.v1.27.3.tar kindest/node:v1.27.3

# 下载对应版本的kubectl
curl -LO "https://dl.k8s.io/release/v1.27.3/bin/linux/amd64/kubectl"
```

1.4 下载helm

```bash
wget https://get.helm.sh/helm-v3.13.3-linux-amd64.tar.gz
```

1.5 下载registry镜像

```bash
docker pull registry:2.8.3
docker save registry:2.8.3 > registry.tar
`
``

1.6 下载 ChaosMesh

```
export CHAOS_MESH_VERSION=v2.6.2
docker pull ghcr.dockerproxy.com/chaos-mesh/chaos-mesh:${CHAOS_MESH_VERSION}
docker pull ghcr.dockerproxy.com/chaos-mesh/chaos-daemon:${CHAOS_MESH_VERSION}
docker pull ghcr.dockerproxy.com/chaos-mesh/chaos-dashboard:${CHAOS_MESH_VERSION}

docker tag ghcr.dockerproxy.com/chaos-mesh/chaos-mesh:${CHAOS_MESH_VERSION}  ghcr.io/chaos-mesh/chaos-mesh:${CHAOS_MESH_VERSION}
docker tag ghcr.dockerproxy.com/chaos-mesh/chaos-daemon:${CHAOS_MESH_VERSION}  ghcr.io/chaos-mesh/chaos-daemon:${CHAOS_MESH_VERSION}
docker tag ghcr.dockerproxy.com/chaos-mesh/chaos-dashboard:${CHAOS_MESH_VERSION}  ghcr.io/chaos-mesh/chaos-dashboard:${CHAOS_MESH_VERSION}

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

curl -fsSL -o chaos-mesh.zip https://github.com/chaos-mesh/chaos-mesh/archive/refs/heads/master.zip
`
``

最后将下面的包上传到目标服务器上,就可以开始安装了:
- chaos-mesh.zip
- image-chaos-daemon.tar
- image-chaos-dashboard.tar
- image-chaos-mesh.tar
- containerd.io-1.6.26-3.1.el8.x86_64.rpm
- container-selinux-2.138.0-1.oe1.noarch.rpm
- docker-buildx-plugin-0.11.2-1.el8.x86_64.rpm
- docker-ce-24.0.7-1.el8.x86_64.rpm
- docker-ce-cli-24.0.7-1.el8.x86_64.rpm
- docker-compose-plugin-2.21.0-1.el8.x86_64.rpm
- libcgroup-0.42.2-1.oe1.x86_64.rpm
- kind
- kind.v1.27.3.tar
- kubectl
- registry.tar

- helm-v3.13.3-linux-amd64.tar.gz


安 装

2.1 安装docker-ce

```
yum install *.rpm
systemctl enable docker
systemctl start docker
```

2.2 安装kubectl

```bash
cp kubectl usr/local/bin
`
``

测试kubectl:
```
[root@snc-host1 rpm-pkg]# kubectl version
WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short. Use --output=yaml|json to get the full version.
Client Version: version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.3", GitCommit:"25b4e43193bcda6c7328a6d147b1fb73a33f1598", GitTreeState:"clean", BuildDate:"2023-06-14T09:53:42Z", GoVersion:"go1.20.5", Compiler:"gc", Platform:"linux/amd64"}
Kustomize Version: v5.0.1
Server Version: version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.3", GitCommit:"25b4e43193bcda6c7328a6d147b1fb73a33f1598", GitTreeState:"clean", BuildDate:"2023-06-15T00:36:28Z", GoVersion:"go1.20.5", Compiler:"gc", Platform:"linux/amd64"}
```

2.3 导入镜像

```
docker load < registry.tar
docker load < image-chaos-mesh.tar
docker load < image-chaos-daemon.tar
docker load < image-chaos-dashboard.tar
docker load < kind.v1.27.3.tar
```

2.4 安装kind,并创建Kubernetes集群

```
chmod +x ./kind
mv ./kind /usr/local/bin/kind
kind create cluster --name kind-2 --image kindest/node:v1.27.3
```

2.5 安装helm

```
tar -xvf helm-v3.13.3-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
`
``

2.6 安装registry

```
docker run -d -p 5000:5000 --restart always --name registry registry:2.8.3
`
``

修改/etc/docker/docker.json, 添加私有仓库:
```json
{
        "insecure-registries": ["10.143.26.27:5000"]
}
`
``

这里需要执行以下命令才能生效:
```bash
systemdctl daemon-reload
systemdctl restart docker
`
``

2.7 安装chaosmesh

至此所以得准备工作已经完成,下面开始安装chaosmesh:
```
export CHAOS_MESH_VERSION=v2.6.2; export DOCKER_REGISTRY=10.143.26.27:5000
export CHAOS_MESH_IMAGE=$DOCKER_REGISTRY/chaos-mesh/chaos-mesh:${CHAOS_MESH_VERSION}
export CHAOS_DAEMON_IMAGE=$DOCKER_REGISTRY/chaos-mesh/chaos-daemon:${CHAOS_MESH_VERSION}
export CHAOS_DASHBOARD_IMAGE=$DOCKER_REGISTRY/chaos-mesh/chaos-dashboard:${CHAOS_MESH_VERSION}
docker image tag ghcr.io/chaos-mesh/chaos-mesh:${CHAOS_MESH_VERSION} $CHAOS_MESH_IMAGE
docker image tag ghcr.io/chaos-mesh/chaos-daemon:${CHAOS_MESH_VERSION} $CHAOS_DAEMON_IMAGE
docker image tag ghcr.io/chaos-mesh/chaos-dashboard:${CHAOS_MESH_VERSION} $CHAOS_DASHBOARD_IMAGE
docker push $CHAOS_MESH_IMAGE
docker push $CHAOS_DAEMON_IMAGE
docker push $CHAOS_DASHBOARD_IMAGE
unzip chaos-mesh.zip -d chaos-mesh && cd chaos-mesh

kubectl create ns chaos-mesh
helm install chaos-mesh helm/chaos-mesh -n chaos-mesh --set images.registry=10.143.26.27:5000
kubectl get pods --namespace chaos-mesh -l app.kubernetes.io/instance=chaos-mesh
kubectl describe pod chaos-controller-manager-5b55ddd998-bssrd -n chaos-mesh

```

服务转发:
```bash
kubectl port-forward --address 10.143.26.27 -n chaos-mesh svc/chaos-mesh-service 2333:2333
`
``

访问:http://10.143.26.27:2333即可登录页面。
  • 根据页面提示生成token,也可参考[官方文档]
    https://chaos-mesh.org/zh/docs/manage-user-permissions/

注意事项:

Kind 创建的集群使用了containerd,添加私有镜像仓库需要修改/etc/containerd/config.toml:
```bash
echo "
[plugins."
io.containerd.grpc.v1.cri".registry]
  config_path = "
"
  [plugins."
io.containerd.grpc.v1.cri".registry.mirrors]
    [plugins."
io.containerd.grpc.v1.cri".registry.mirrors."10.143.26.27:5000"]
      endpoint = ["
http://10.143.26.27:5000"]
  [plugins."io.containerd.grpc.v1.cri".registry.configs]
    [plugins."io.containerd.grpc.v1.cri".registry.configs."10.143.26.27:5000".tls]
      # insecure_skip_verify = true
      skip_verify = true
" >> /etc/containerd/config.toml

至此,所有的组件的安装与配置都已完成。

参考:
kind – Quick Start (k8s.io)
Install Docker Engine on CentOS | Docker Docs
Helm | Docs
Install Chaos Mesh Offline | Chaos Mesh (chaos-mesh.org)

END


本文作者:王玉坤(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论