建立混亂實驗,使用 Chaos Mesh 錯誤來終止具有 Azure 入口網站 的 AKS Pod

您可以使用混亂實驗,藉由在受控制的環境中造成這些失敗,來驗證應用程式是否能夠復原失敗。 在本文中,您會使用混亂實驗和 Azure Chaos Studio,在命名空間上造成定期的 Azure Kubernetes Service (AKS) Pod 失敗。 執行此實驗可協助您防範零星失敗時無法使用的服務。

Chaos Studio 使用 適用於 Kubernetes 的免費開放原始碼混亂工程平臺 Chaos Mesh,將錯誤插入 AKS 叢集。 Chaos Mesh 錯誤是 服務導向 錯誤,需要將 Chaos Mesh 安裝在 AKS 叢集上。 您可以使用這些相同的步驟來設定及執行任何 AKS Chaos Mesh 錯誤的實驗。

必要條件

限制

  • 您可以在 Chaos Studio 中設定 VNet 插入,以搭配私人叢集使用 Chaos Mesh 錯誤。 發出給私人叢集的任何命令,包括本文中設定 Chaos Mesh 的步驟,都必須遵循 私人叢集指引。 建議的方法包括從相同虛擬網路中的 VM 或使用 AKS 命令叫用 功能進行連線
  • 只有 Linux 節點集區才支援 AKS Chaos Mesh 錯誤。
  • 目前,如果 AKS 叢集已 停用本機帳戶,Chaos Mesh 錯誤將無法運作。
  • 如果您的 AKS 叢集設定為只允許授權的 IP 範圍,您需要允許 Chaos Studio 的 IP 範圍。 您可以使用服務標籤探索 API 或可下載的 JSON 檔案來查詢ChaosStudio服務標籤,以尋找它們。

在 AKS 叢集上設定 Chaos Mesh

您必須先在 AKS 叢集上安裝 Chaos Mesh,才能在 Chaos Studio 中執行 Chaos Mesh 錯誤。

  1. 在 Azure Cloud Shell 視窗中執行下列命令,其中您已將作用中的訂用帳戶設定為 AKS 叢集部署所在的訂用帳戶。 將和 $CLUSTER_NAME 取代$RESOURCE_GROUP為叢集資源的資源組名和名稱。

    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 混亂網格 Pod 混亂 ]。 以您希望失敗的分鐘數填入 Duration,並使用下列資訊填入 jsonSpec

    若要制定混亂網格 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 服務導向實驗,您已準備好: