ChaosBlade 1.7.4 双架构部署:Helm 3 在 K8s 集群的 5 步安装与验证
ChaosBlade 1.7.4 双架构部署:Helm 3 在 K8s 集群的 5 步安装与验证
随着云原生技术的普及,混沌工程已成为保障系统稳定性的重要手段。ChaosBlade 作为阿里巴巴开源的混沌实验工具,其 1.7.4 版本对 AMD64 和 ARM 架构的双重支持,为混合架构集群提供了更灵活的故障注入能力。本文将详细介绍如何通过 Helm 3 在 Kubernetes 集群中部署 ChaosBlade 1.7.4,并验证其运行状态。
1. 环境准备
在开始部署之前,需要确保您的环境满足以下要求:
-
Kubernetes 集群 :版本不低于 v1.16,可通过以下命令验证:
kubectl version --short预期输出应包含 Server 版本信息,例如:
Server Version: v1.22.5 -
Helm 3 :已安装 Helm 3.x 版本,运行以下命令检查:
helm version正常输出类似:
version.BuildInfo{Version:"v3.8.0", GitCommit:"...", GitTreeState:"clean", GoVersion:"go1.17.5"} -
网络连通性 :确保集群节点能访问 GitHub 或阿里云 OSS(国内推荐)以下载资源。
注意:如果您的集群同时包含 AMD64 和 ARM 节点,需要确认 Helm 仓库提供的 Chart 包是否包含多架构镜像。ChaosBlade 1.7.4 官方镜像已支持双架构。
2. 添加 Helm 仓库并下载 Chart
ChaosBlade 提供了官方 Helm 仓库,执行以下命令添加仓库:
helm repo add chaosblade-io https://chaosblade-io.github.io/charts
helm repo update
接下来,下载特定版本的 Chart 包。对于 1.7.4 版本:
helm pull chaosblade-io/chaosblade-operator --version 1.7.4
下载完成后,您会得到一个
chaosblade-operator-1.7.4.tgz
文件。可以通过以下命令查看 Chart 内容:
tar -xzvf chaosblade-operator-1.7.4.tgz && tree chaosblade-operator
3. 安装 ChaosBlade Operator
ChaosBlade 通过 Operator 模式管理混沌实验。以下是安装步骤:
-
创建专用命名空间 :
kubectl create ns chaosblade -
安装 Operator :
helm install chaosblade-operator chaosblade-operator-1.7.4.tgz \ --namespace chaosblade \ --set webhook.enable=true \ --set operator.image.repository=chaosbladeio/chaosblade-operator \ --set operator.image.tag=v1.7.4 \ --set tool.image.repository=chaosbladeio/chaosblade-tool \ --set tool.image.tag=v1.7.4关键参数说明:
-
webhook.enable=true:启用 MutatingWebhook,支持 Pod 文件系统 I/O 故障实验 -
operator.image.repository和tool.image.repository:指定镜像仓库 -
operator.image.tag和tool.image.tag:固定版本以避免兼容性问题
-
-
验证安装 : 检查 Pod 状态:
kubectl get pods -n chaosblade -l release=chaosblade-operator正常输出应包含一个
chaosblade-operatorPod 和每个节点一个chaosblade-toolPod:NAME READY STATUS RESTARTS AGE chaosblade-operator-5f7b98d6d4-2xqhg 1/1 Running 0 2m chaosblade-tool-7wq9p 1/1 Running 0 2m chaosblade-tool-d4v6r 1/1 Running 0 2m
4. 双架构支持验证
对于混合架构集群,需要确认不同架构节点的工具 Pod 使用了正确的镜像:
-
检查节点架构 :
kubectl get nodes -o wide输出中的
ARCHITECTURE列会显示各节点的架构类型。 -
验证工具 Pod 镜像 :
kubectl describe pod -n chaosblade -l app=chaosblade-tool | grep Image:对于 ARM 节点,应看到类似以下输出:
Image: chaosbladeio/chaosblade-tool:v1.7.4-arm64AMD64 节点则显示:
Image: chaosbladeio/chaosblade-tool:v1.7.4 -
跨架构实验测试 : 创建一个测试 Deployment:
kubectl create deployment nginx --image=nginx -n chaosblade对 Pod 注入网络延迟:
cat <<EOF | kubectl apply -f - apiVersion: chaosblade.io/v1alpha1 kind: ChaosBlade metadata: name: delay-pod-network spec: experiments: - scope: pod target: network action: delay desc: "delay pod network by 1000ms" matchers: - name: names value: ["nginx-xxxxxxxxxx-xxxxx"] - name: namespace value: ["chaosblade"] - name: time value: ["1000"] - name: offset value: ["100"] EOF替换
nginx-xxxxxxxxxx-xxxxx为实际的 Pod 名称。
5. 常见问题排查
安装过程中可能会遇到以下问题:
问题1:镜像拉取失败
症状 :
Failed to pull image "chaosbladeio/chaosblade-tool:v1.7.4":
no matching manifest for linux/arm64/v8 in the manifest list entries
解决方案 :
-
确认 Chart 的
values.yaml中已配置多架构镜像:image: repository: chaosbladeio/chaosblade-tool tag: v1.7.4 platform: linux/amd64: v1.7.4 linux/arm64: v1.7.4-arm64 -
或直接指定完整镜像路径:
helm upgrade chaosblade-operator --set tool.image.repository=chaosbladeio/chaosblade-tool-arm64 --set tool.image.tag=v1.7.4
问题2:Webhook 证书错误
症状 :
Internal error occurred: failed calling webhook "mpodchaosblade.kb.io":
Post "https://chaosblade-operator-webhook-service.chaosblade.svc:443/mutate-pods?timeout=30s":
x509: certificate signed by unknown authority
解决方案 : 重新生成 webhook 证书:
helm upgrade chaosblade-operator --set webhook.cert.generate=true
问题3:CRD 已存在冲突
症状 :
Error: rendered manifests contain a resource that already exists...
解决方案 : 先删除现有 CRD:
kubectl delete crd chaosblades.chaosblade.io
6. 生产环境建议
对于生产环境部署,建议考虑以下优化配置:
-
资源限制 : 在
values.yaml中为 operator 和 tool 容器设置资源限制:operator: resources: limits: cpu: 500m memory: 512Mi tool: resources: limits: cpu: 200m memory: 256Mi -
节点亲和性 : 如果只需要在特定节点上运行 chaosblade-tool:
tool: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/arch operator: In values: [amd64, arm64] -
持久化日志 : 启用日志持久化以便审计:
operator: volumeMounts: - name: log-volume mountPath: /logs volumes: - name: log-volume persistentVolumeClaim: claimName: chaosblade-logs
通过以上步骤,您已经成功在 Kubernetes 集群中部署了支持双架构的 ChaosBlade 1.7.4。接下来可以开始设计混沌实验,验证系统的容错能力。
更多推荐
所有评论(0)