共用方式為


透過 Azure 入口網站建立混沌實驗,以使用 Chaos Mesh 錯誤來終止 AKS Pod

您可以使用混沌實驗在受控環境中引發失敗,以驗證應用程式是否能夠從失敗中復原。 在本文中,您將使用混沌實驗和 Azure Chaos Studio 來導致命名空間上出現定期的 Azure Kubernetes Service (AKS) Pod 失敗。 執行此實驗可協助您在偶爾發生失敗時防止服務無法使用。

Chaos Studio 會使用 Chaos Mesh,這個免費的開放原始碼混沌工程平台可讓 Kubernetes 將錯誤注入 AKS 叢集中。 Chaos Mesh 錯誤是服務直接錯誤,需要在 AKS 叢集上安裝 Chaos Mesh。 您可以使用這些相同的步驟來針對任何 AKS Chaos Mesh 錯誤設定並執行實驗。

必要條件

限制

在 AKS 叢集上設定 Chaos Mesh

在 Chaos Studio 中執行 Chaos Mesh 錯誤之前,您必須在您的 AKS 叢集上安裝 Chaos Mesh。

  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
    

    您應該會看到類似以下範例的輸出 (一個 chaos-controller-manager 以及一或多個 chaos-daemons):

    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 叢集只有一個目標類型 (服務直接),但其他資源可能最多有兩個目標類型。 其中一個目標類型適用於服務直接錯誤。 另一個目標類型是代理程式型錯誤。 每一種 Chaos Mesh 錯誤類型都會以 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 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. 選取 [下一步:目標資源]

    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 Service 叢集管理員角色,然後選取角色。 選取 [下一步]。

    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 Chaos Mesh 服務直接實驗,您可以開始: