透過 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 錯誤設定並執行實驗。
必要條件
- Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,請在開始之前先建立 Azure 免費帳戶。
- 具有 Linux 節點集區的 AKS 叢集。 如果您沒有 AKS 叢集,請參閱使用 Azure CLI、Azure PowerShell 或 Azure 入口網站的 AKS 快速入門。
限制
- 您可以設定 Chaos Studio 中的 VNet 插入來將 Chaos Mesh 錯誤與私人叢集結合使用。 向私人叢集發出的任何命令 (包括本文中設定 Chaos Mesh 的步驟) 都需要遵循私人叢集指導。 建議的方法包括從同一個虛擬網路中的 VM 進行連線或使用 AKS 命令叫用功能。
- 只有在 Linux 節點集區上才支援 AKS Chaos Mesh 錯誤。
- 如果您的 AKS 叢集設定為只允許授權的 IP 範圍,則您必須允許 Chaos Studio 的 IP 範圍。 您可以使用服務標籤探索 API 或可下載的 JSON 檔案查詢
ChaosStudio
服務標籤來進行尋找。
在 AKS 叢集上設定 Chaos Mesh
在 Chaos Studio 中執行 Chaos Mesh 錯誤之前,您必須在您的 AKS 叢集上安裝 Chaos Mesh。
在 Azure Cloud Shell 視窗中執行下列命令,其中您已將作用中的訂用帳戶設定為要部署 AKS 叢集的訂用帳戶。 將
MyManagedCluster
和MyResourceGroup
取代為您叢集和資源群組的名稱。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
執行下列命令來確認已安裝 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
在 AKS 叢集上啟用 Chaos Studio
除非資源已先新增至 Chaos Studio,否則 Chaos Studio 無法對該資源插入錯誤。 您可以藉由在資源上建立目標和功能來將該資源新增至 Chaos Studio。 AKS 叢集只有一個目標類型 (服務直接),但其他資源可能最多有兩個目標類型。 其中一個目標類型適用於服務直接錯誤。 另一個目標類型是代理程式型錯誤。 每一種 Chaos Mesh 錯誤類型都會以 PodChaos、NetworkChaos 和 IOChaos 等功能表示。
開啟 Azure 入口網站。
在搜尋列中搜尋 [Chaos Studio]。
選取 [目標],然後移至您的 AKS 叢集。
選取您的 AKS 叢集旁邊的核取方塊。 選取 [啟用目標],然後從下拉式功能表中選取 [啟用服務直接目標]。
確認已列出所需的資源。 選取 [檢閱 + 啟用],然後 [啟用]。
會出現一則通知,指出您所選取的資源已成功啟用。
您現在已成功將您的 AKS 叢集新增至 Chaos Studio。 在 [目標] 檢視中,您也可以管理此資源上啟用的功能。 選取資源旁邊的 [管理動作] 連結以顯示針對該資源所啟用的功能。
建立實驗
現在您可以建立實驗。 混沌實驗會定義您想要針對目標資源採取的動作。 動作會以循序步驟組織並執行。 混沌實驗也會定義您想要針對平行執行之分支採取的動作。
在 Chaos Studio 中選取 [實驗] 索引標籤。 在此檢視中,您可以查看並管理您的所有混沌實驗。 選取 [建立]>[新增實驗]。
填寫您要部署混沌實驗的訂閱、資源群組與位置。 為您的實驗命名。 選取 [下一步: 實驗設計工具]。
您現在位於 Chaos Studio 實驗設計工具中。 實驗設計工具可讓您藉由新增步驟、分支與錯誤來建置實驗。 為您的 [步驟] 和 [分支] 提供一個易記的名稱,然後選取 [新增動作] > [新增錯誤]。
從下拉式清單中選取 [AKS Chaos Mesh Pod Chaos]。 在 [持續時間] 中填寫您希望錯誤持續的分鐘數,並在 [jsonSpec] 中填寫以下資訊:
若要制定您的 Chaos Mesh
jsonSpec
:請參閱 Chaos Mesh 文件以了解錯誤類型,例如 PodChaos 類型。
使用 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
移除
spec
以外的任何 YAML (包括規格屬性名稱),並移除規格詳細資料的縮排。 不需要duration
參數,但如果提供,則會使用。 在本例中,請將其移除。action: pod-failure mode: all selector: namespaces: - default
使用像這樣的 YAML 對 JSON 轉換器,將 Chaos Mesh YAML 轉換為 JSON 並最小化。
{"action":"pod-failure","mode":"all","selector":{"namespaces":["default"]}}
將最小化的 JSON 貼到入口網站中的 [jsonSpec] 欄位中。
選取 [下一步:目標資源]。
選取您的 AKS 叢集,然後選取 [下一步]。
驗證您的實驗看起來是否正確,然後選取 [檢閱 + 建立]>[建立]。
向您的 AKS 叢集授與實驗權限
當您建立混沌實驗時,Chaos Studio 會建立系統指派的受控識別,以針對目標資源執行錯誤。 必須將目標資源的適當權限授與此身分識別,實驗才能順利執行。
移至您的 AKS 叢集,然後選取 [存取控制 (IAM)]。
選取 [新增>][新增角色指派]。
搜尋 Azure Kubernetes Service 叢集管理員角色,然後選取角色。 選取 [下一步]。
選擇 [選取成員],然後搜尋您的實驗名稱。 選取您的實驗,然後選擇 [選取]。 若相同租用戶中有多個具有相同名稱的實驗,系統則會截斷您的實驗名稱並新增隨機字元。
選取 [檢閱 + 指派]>[檢閱 + 指派]。
執行您的實驗
您現在可以開始執行實驗。 若要查看效果,建議您開啟您的 AKS 叢集概觀,然後在不同的瀏覽器分頁中移至 [深入解析]。作用中 Pod 計數的即時資料會顯示執行您的實驗的效果。
在 [實驗] 檢視中,選取您的實驗。 選取 [開始] > [確定]。
當 [狀態] 變更為 [執行中] 時,在 [歷程記錄] 下選取最近一次執行的 [詳細資料],以查看執行中實驗的詳細資料。
下一步
現在您已執行 AKS Chaos Mesh 服務直接實驗,您可以開始: