你当前正在访问 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 使用 Chaos Mesh - 一个免费的开源混沌工程平台,可供 Kubernetes 用于将故障注入 AKS 群集。 Chaos Mesh 故障是要求将 Chaos Mesh 安装在 AKS 群集上的直接服务故障。 同样可以使用这些步骤来设置和运行针对任何 AKS Chaos Mesh 故障的试验。

先决条件

限制

在 AKS 群集上设置 Chaos Mesh

必须在 AKS 群集上安装 Chaos Mesh,然后才能在 Chaos Studio 中运行 Chaos Mesh 故障。

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

    az aks get-credentials --admin --name MyManagedCluster --resource-group MyResourceGroup
    
    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 群集只有一种目标类型 (service-direct),但其他资源最多可能有两种目标类型。 一种目标类型用于服务直接故障。 另一种目标类型用于基于代理的故障。 每种类型的 Chaos Mesh 故障都以一项功能表示(例如 PodChaos、NetworkChaos 和 IOChaos)。

  1. 打开 Azure 门户

  2. 在搜索栏中搜索“Chaos Studio”

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

    屏幕截图显示 Azure 门户中的“目标”视图。

  4. 选中你的 AKS 群集旁边的复选框。 选择“启用目标”并从下拉菜单中选择“启用服务直接目标”。

    显示在 Azure 门户中启用目标的屏幕截图。

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

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

    屏幕截图显示了一条通知,该通知指出目标已成功启用。

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

创建试验

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

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

    屏幕截图显示了 Azure 门户中的“试验”视图。

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

    显示添加基本试验详细信息的屏幕截图。

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

    屏幕截图显示了试验设计器。

  4. 从下拉列表中选择“AKS Chaos Mesh Pod Chaos”。 将“持续时间”填写为你希望故障持续的分钟数,并使用以下信息填写 jsonSpec

    规划你的 Chaos Mesh jsonSpec

    1. 参阅 Chaos Mesh 文档以查看故障类型,例如 PodChaos 类型

    2. 使用 Chaos Mesh 文档来阐明该错误类型的 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. 选择“下一步: 目标资源”。

    屏幕截图显示了故障属性。

  6. 选择你的 AKS 群集并选择“下一步”。

    屏幕截图显示添加目标。

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

    显示了查看和创建试验的屏幕截图。

向 AKS 群集授予试验权限

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

  1. 转到你的 AKS 群集并选择“访问控制(IAM)”

    显示了 AKS 概述页面的屏幕截图。

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

    显示了访问控制 (IAM) 概述的屏幕截图。

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

    显示了分配 AKS 群集管理员角色的屏幕截图。

  4. 选择“选择成员”,然后搜索试验名称。 选择试验,然后选择“选择”。 如果同一租户中存在多个名称相同的试验,则会通过添加随机字符截断试验名称。

    显示了将试验添加到角色的屏幕截图。

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

运行试验

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

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

    显示了启动试验的屏幕截图。

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

后续步骤

运行 AKS Chaos Mesh service-direct 试验后,接下来可以学习以下知识: