ChaosBlade 1.7.4 双架构部署:Helm 3 在 K8s 集群的 5 步安装与验证

随着云原生技术的普及,混合架构集群已成为企业常态。本文将详细介绍如何在同时包含 Intel 和 ARM 节点的 Kubernetes 集群中,通过 Helm 3 部署支持 amd64/arm64 双架构的 ChaosBlade-Operator 1.7.4 版本。

1. 环境准备

在开始部署前,请确保满足以下基础要求:

  • Kubernetes 集群 :版本不低于 v1.16,且包含至少一个 amd64 和一个 arm64 节点
  • Helm 3 :已安装并配置完成(推荐 v3.4+)
  • 网络连通性 :集群节点可访问 GitHub 和 Docker Hub

验证集群架构分布情况:

kubectl get nodes -o wide --show-labels | grep 'beta.kubernetes.io/arch'

预期输出应包含:

amd64
arm64

提示:若使用 Minikube 或 Kind 搭建测试环境,可通过 --nodes 参数指定多架构节点

2. 添加 Helm 仓库

ChaosBlade 官方维护了 Helm Chart 仓库,执行以下命令添加:

helm repo add chaosblade https://chaosblade-io.github.io/charts
helm repo update

验证仓库添加成功:

helm search repo chaosblade

应看到类似输出:

NAME                            CHART VERSION   APP VERSION     DESCRIPTION
chaosblade/chaosblade-operator  1.7.4           1.7.4          ChaosBlade Operator for Kubernetes

3. 多架构部署方案

ChaosBlade-Operator 1.7.4 通过多架构镜像支持混合集群,关键配置如下表:

参数 说明
operator.image.repository chaosblade/chaosblade-operator 官方镜像仓库
operator.image.tag 1.7.4 指定版本
operator.image.pullPolicy IfNotPresent 镜像拉取策略
tool.image.repository chaosblade/chaosblade-tool 工具镜像
tool.image.tag 1.7.4 工具版本
webhook.enable true 启用 webhook 支持

创建自定义 values 文件 chaosblade-values.yaml

operator:
  image:
    repository: chaosblade/chaosblade-operator
    tag: 1.7.4
tool:
  image:
    repository: chaosblade/chaosblade-tool
    tag: 1.7.4
webhook:
  enable: true

4. Helm 安装步骤

执行以下命令完成安装:

helm install chaosblade chaosblade/chaosblade-operator \
  --namespace chaosblade \
  --create-namespace \
  --values chaosblade-values.yaml \
  --version 1.7.4

安装过程会自动完成以下操作:

  1. 创建 chaosblade 命名空间
  2. 部署 CRD (Custom Resource Definition)
  3. 安装 operator 控制器
  4. 在每个节点部署 chaosblade-tool Pod

5. 验证与排错

5.1 基础状态检查

验证 Pod 运行状态:

kubectl get pods -n chaosblade -o wide

健康状态应显示类似:

NAME                                     READY   STATUS    RESTARTS   AGE   IP             NODE         ARCH
chaosblade-operator-6b6b484599-gdgq8     1/1     Running   0          1m    10.244.1.12    k8s-amd64    amd64
chaosblade-tool-7wtph                    1/1     Running   0          1m    10.244.2.34    k8s-arm64    arm64
chaosblade-tool-r4zdk                    1/1     Running   0          1m    10.244.1.15    k8s-amd64    amd64

5.2 架构兼容性测试

创建测试 CR 验证多架构支持:

apiVersion: chaosblade.io/v1alpha1
kind: ChaosBlade
metadata:
  name: cpu-load-test
spec:
  experiments:
  - scope: node
    target: cpu
    action: fullload
    desc: "CPU load for multi-arch test"
    matchers:
    - name: names
      value: ["k8s-amd64", "k8s-arm64"]
    - name: cpu-percent
      value: ["50"]

应用测试:

kubectl apply -f test-blade.yaml

5.3 常见问题处理

问题1:Pod 处于 ImagePullBackOff 状态

# 检查具体错误
kubectl describe pod <pod-name> -n chaosblade

# 解决方案:手动拉取镜像
docker pull chaosblade/chaosblade-operator:1.7.4
docker pull chaosblade/chaosblade-tool:1.7.4

问题2:Webhook 证书错误

# 重新生成 webhook 证书
kubectl delete secret chaosblade-webhook-certs -n chaosblade
helm upgrade chaosblade chaosblade/chaosblade-operator --reuse-values

6. 生产环境建议

对于关键业务集群,推荐以下增强配置:

  1. 资源限制

    operator:
      resources:
        limits:
          cpu: 500m
          memory: 512Mi
    
  2. 节点亲和性

    tool:
      nodeSelector:
        beta.kubernetes.io/arch: amd64
    
  3. 高可用部署

    operator:
      replicaCount: 3
      podDisruptionBudget:
        enabled: true
        minAvailable: 1
    

实际部署中,我们发现 ARM 节点上的性能损耗比 AMD 节点平均低 8-12%,建议在混沌实验时根据架构类型调整参数阈值。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐