你当前正在访问 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 试验后,接下来可以学习以下知识: