你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

通过 Azure 门户创建使用 Chaos Mesh 故障来终止 AKS Pod 的 Chaos 试验

可以使用混沌试验,通过在受控环境中引发一些故障,来验证应用程序是否可以应对这些故障。 本文使用混沌试验和 Azure Chaos Studio 在命名空间上导致定期Azure Kubernetes 服务(AKS)Pod 故障。 运行此实验可帮助你在发生偶发性故障时防止服务不可用。

Chaos Studio 使用 适用于 Kubernetes 的免费开源混沌工程平台 Chaos 网格将故障注入 AKS 群集。 Chaos Mesh 故障是要求将 Chaos Mesh 安装在 AKS 群集上的直接服务故障。 可以使用这些步骤为任何 AKS 混沌网格故障设置和运行试验。

先决条件

限制

  • 可以通过在 Chaos Studio 中配置 VNet 注入,将混沌网格故障与专用群集配合使用。 颁发给专用群集的任何命令(包括本文中设置 Chaos 网格的步骤)都需要遵循 专用群集指南。 建议的方法包括从同一虚拟网络中的 VM 或使用 AKS 命令调用 功能进行连接。
  • AKS Chaos Mesh 故障仅在 Linux 节点池上受支持。
  • 目前,如果 AKS 群集已 禁用本地帐户,则混沌网格故障不起作用。
  • 如果 AKS 群集配置为仅允许授权 IP 范围,则需要允许 Chaos Studio 的 IP 范围。 可以通过使用服务标记发现 API 查询服务标记或可下载的 JSON 文件来查找它们。ChaosStudio

在 AKS 群集上设置 Chaos Mesh

在 Chaos Studio 中运行混沌网格错误之前,必须在 AKS 群集上安装 Chaos 网格。

  1. Azure Cloud Shell 窗口中运行以下命令,在此窗口中将活动订阅设置为在其中部署 AKS 群集的订阅。 将 $RESOURCE_GROUP$CLUSTER_NAME 分别替换为群集资源的资源组和名称。

    az aks get-credentials -g $RESOURCE_GROUP -n $CLUSTER_NAME
    
    helm repo add chaos-mesh https://charts.chaos-mesh.org
    helm repo update
    kubectl create ns chaos-testing
    helm install chaos-mesh chaos-mesh/chaos-mesh --namespace=chaos-testing --set chaosDaemon.runtime=containerd --set chaosDaemon.socketPath=/run/containerd/containerd.sock
    
  2. 通过运行以下命令来验证是否已安装 Chaos Mesh Pod:

    kubectl get po -n chaos-testing
    

    应会看到类似于以下示例的输出(混沌控制器管理器和一个或多个混沌守护程序):

    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 Mesh 网站上的安装说明

在 AKS 群集上启用 Chaos Studio

Chaos Studio 无法针对资源注入故障,除非该资源首先添加到 Chaos Studio。 通过在资源上创建 目标和功能 ,将资源添加到 Chaos Studio。 AKS 群集只有一个目标类型(服务直接),但其他资源可能最多有两个目标类型。 一种目标类型用于服务直接故障。 另一个目标类型用于基于代理的故障。 每种混沌网格故障都表示为 PodChaos、NetworkChaos 和 IOChaos 等功能。

  1. 打开 Azure 门户

  2. 在搜索栏中搜索 Chaos Studio

  3. 选择“ 目标 ”并转到 AKS 群集。

    Screenshot that shows the Targets view in the Azure portal.

  4. 选择 AKS 群集旁边的检查框。 选择“ 启用目标 ”,然后从下拉菜单中选择“ 启用服务直接目标 ”。

    Screenshot that shows enabling targets in the Azure portal.

  5. 确认列出了所需的资源。 选择“查看 + 启用”,然后选择“启用”

  6. 此时会显示一条通知,指示你选择的资源已成功启用。

    Screenshot that shows the notification showing that the target was successfully enabled.

现已成功将 AKS 群集添加到 Chaos Studio。 在 “目标” 视图中,还可以管理在此资源上启用的功能。 选择资源旁边的“管理操作”链接以显示为该资源启用的功能。

创建试验

现在,可以创建试验。 混沌试验定义要针对目标资源执行的操作。 操作按顺序组织并运行。 混沌试验还定义了要针对并行运行的分支执行的操作。

  1. Chaos Studio 中选择“试验 ”选项卡。 在此视图中,可以查看和管理所有混沌试验。 选择“创建”>“新建试验”。

    Screenshot that shows the Experiments view in the Azure portal.

  2. 填写要在其中部署混沌试验的“订阅”、“资源组”和“位置” 。 为试验指定一个名称。 选择“下一步: 试验设计器”。

    Screenshot that shows adding basic experiment details.

  3. 现在你正在 Chaos Studio 试验设计器中。 使用试验设计器,可以通过添加步骤、分支和故障来构建试验。 为步骤和分支提供友好名称,然后选择“添加操作>添加错误”。

    Screenshot that shows the experiment designer.

  4. 从下拉列表中选择 AKS 混沌网格 Pod 混沌 。 使用希望失败的分钟数填充 持续时间并使用以下信息填充 jsonSpec

    构建混沌网格 jsonSpec

    1. 有关故障类型,请参阅 Chaos 网格文档, 例如 PodChaos 类型

    2. 使用 Chaos 网格文档为该故障类型制定 YAML 配置。

      apiVersion: chaos-mesh.org/v1alpha1
      kind: PodChaos
      metadata:
        name: pod-failure-example
        namespace: chaos-testing
      spec:
        action: pod-failure
        mode: all
        duration: '600s'
        selector:
          namespaces:
            - default
      
    3. 删除(包括规范属性名称)之外 spec 的任何 YAML,并删除规范详细信息的缩进。 duration参数不是必需的,但如果提供,则使用此参数。 在这种情况下,请将其删除。

      action: pod-failure
      mode: all
      selector:
        namespaces:
          - default
      
    4. 使用此类 YAML 到 JSON 转换器将 Chaos Mesh YAML 转换为 JSON 并将其最小化。

      {"action":"pod-failure","mode":"all","selector":{"namespaces":["default"]}}
      
    5. 将最小化的 JSON 粘贴到门户中的 jsonSpec 字段

  5. 选择“下一步: 目标资源”。

    Screenshot that shows fault properties.

  6. 选择 AKS 群集,然后选择“ 下一步”。

    Screenshot that shows adding a target.

  7. 验证试验是否正确,然后选择“查看 + 创建>”。

    Screenshot that shows reviewing and creating an experiment.

向 AKS 群集授予试验权限

创建混沌试验时,Chaos Studio 会创建系统分配的托管标识,用于针对目标资源执行故障。 若要成功运行试验,必须向此标识提供目标资源的适当权限

  1. 转到 AKS 群集并选择访问控制(IAM)。

    Screenshot that shows the AKS Overview page.

  2. 选择“添加”>“添加角色分配”。

    Screenshot that shows the Access control (IAM) overview.

  3. 搜索 Azure Kubernetes 服务群集管理员角色,然后选择该角色。 选择下一步

    Screenshot that shows assigning the AKS Cluster Admin role.

  4. 选择“选择成员”,然后搜索试验名称。 选择试验,然后选择“选择”。 如果同一租户中有多个具有相同名称的试验,则试验名称将被截断,并添加随机字符。

    Screenshot that shows adding an experiment to a role.

  5. 选择“审阅 + 分配>审阅 + 分配”。

运行试验

现在可以运行试验了。 若要查看效果,建议打开 AKS 群集概述,并在单独的浏览器选项卡中转到“见解”。活动 Pod 计数实时数据显示运行试验的效果。

  1. “试验 ”视图中,选择试验。 选择“开始>确定”。

    Screenshot that shows starting an experiment.

  2. 状态更改为“正在运行”时,选择“历史记录最新运行的详细信息以查看正在运行的试验的详细信息。

后续步骤

现在,你已运行 AKS 混沌网格服务直接试验,现在可以: