在 GKE 區域叢集中模擬可用區故障


常見的法規要求是公司必須證明自身具備災難復原 (DR) 能力。對於在雲端執行的應用程式,這項規定包括當某個可用區中託管的伺服器一段時間無法使用時,服務的可靠性和可用性。本文適用於管理員和架構師、營運人員,以及備份和災害復原 (DR) 管理員,說明如何在使用 Google Kubernetes Engine (GKE) Standard 區域叢集時,模擬區域容錯移轉。

GKE 區域叢集是在使用者選擇的區域中建立,並在所選區域內多個可用區的 VM 上執行控制層。GKE Autopilot 叢集一律為區域叢集,而 GKE Standard 叢集可以是區域叢集或可用區叢集。本教學課程使用 GKE Standard 區域叢集。叢集節點會透過負載平衡器與控制層通訊,因此節點位置和控制層 VM 位置不一定會相符。使用區域叢集時,您無法在 Google Cloud 控制台中停用特定可用區。詳情請參閱 GKE 叢集架構

本教學課程提供三種模擬可用區故障的方法。您可以模擬區域故障,並使用符合自身法規遵循需求的方法,驗證應用程式是否做出正確回應。

本文中的方法也適用於區域叢集,包括單一可用區和多可用區。這些方法只會影響目標區域中的節點,不會影響 GKE 控制平面。

目標

  • 使用預設設定建立地區 GKE Standard 叢集。
  • 將範例微服務應用程式部署至區域叢集。
  • 使用下列其中一種方法模擬區域中斷:
    • 縮減地區叢集中的節點集區可用區。
    • 使用單一可用區節點集區。
    • 隔離並排空目標故障區域的節點。
  • 確認微服務是否可用。

費用

本教學課程使用下列 Google Cloud的計費元件:

  • Compute Engine
  • GKE Standard 模式叢集

使用 Pricing Calculator 可根據您的預測使用量來產生費用預估。

事前準備

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.

  3. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  4. To initialize the gcloud CLI, run the following command:

    gcloud init
  5. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Kubernetes Engine API, Compute Engine APIs:

    gcloud services enable container.googleapis.com compute.googleapis.com
  8. Install the Google Cloud CLI.

  9. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  10. To initialize the gcloud CLI, run the following command:

    gcloud init
  11. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  12. Make sure that billing is enabled for your Google Cloud project.

  13. Enable the Kubernetes Engine API, Compute Engine APIs:

    gcloud services enable container.googleapis.com compute.googleapis.com
  14. 建立區域標準叢集

    模擬區域故障前,請先建立具有多區域節點集區的區域叢集。叢集的控制層和節點會複製到指定區域的多個可用區。

    使用 Google Cloud CLI 建立叢集:

    1. 使用預設設定建立新的 GKE Standard 叢集:

      gcloud container clusters create CLUSTER_NAME \
        --region REGION \
        --num-nodes 2
      

      替換下列參數:

      • CLUSTER_NAME:叢集名稱。
      • REGION:叢集所在的區域,例如 us-central1

      GKE 需要幾分鐘的時間建立叢集,並確認一切運作正常。系統會在您指定的區域中,於每個可用區建立兩個節點。

    2. 檢查上一步驟中建立的每個節點的可用區:

      kubectl get node -o=custom-columns='NAME:.metadata.name,ZONE:.metadata.labels.topology\.kubernetes\.io/zone,INT_IP:.status.addresses[0].address'
      

      輸出內容如下列範例所示:

      NAME                                    ZONE                INT_IP
      regional-cluster-1-default-pool-node1   asia-southeast1-c   10.128.0.37
      regional-cluster-1-default-pool-node2   asia-southeast1-c   10.128.0.36
      regional-cluster-1-default-pool-node3   asia-southeast1-b   10.128.0.38
      regional-cluster-1-default-pool-node4   asia-southeast1-b   10.128.0.33
      regional-cluster-1-default-pool-node5   asia-southeast1-a   10.128.0.35
      regional-cluster-1-default-pool-node6   asia-southeast1-a   10.128.0.34
      
    3. 連線至叢集:

      gcloud container clusters get-credentials CLUSTER_NAME \
          --region REGION
      

    部署範例微服務應用程式

    如要查看模擬容錯移轉在本文件中的效果,請將範例 微服務型應用程式部署至叢集。本文將使用Cymbal Bank 範例應用程式

    1. 在殼層中,複製下列 GitHub 存放區並變更為該目錄:

      git clone https://github.com/GoogleCloudPlatform/bank-of-anthos.git
      cd bank-of-anthos/
      
    2. 將 Cymbal Bank 範例應用程式部署至您在前一節建立的 GKE 叢集:

      kubectl apply -f ./extras/jwt/jwt-secret.yaml
      kubectl apply -f ./kubernetes-manifests
      
    3. 等待 Pod 準備就緒:

      kubectl get pods
      
    4. 幾分鐘後,您應該會看到 Pod 處於 Running 狀態:

      NAME                                  READY   STATUS    RESTARTS   AGE
      accounts-db-0                         1/1     Running   0          16s
      balancereader-7dc7d9ff57-sstm5        0/1     Running   0          15s
      contacts-7ddc76d94-rr28x              0/1     Running   0          14s
      frontend-747b84bff4-2mtlv             0/1     Running   0          13s
      ledger-db-0                           1/1     Running   0          13s
      ledgerwriter-f6cc7889d-9qjfg          0/1     Running   0          13s
      loadgenerator-57d4cb57cc-zqvqb        1/1     Running   0          13s
      transactionhistory-5dd7c7fd77-lwkv8   0/1     Running   0          12s
      userservice-cd5ddb4bb-wwhml           0/1     Running   0          12s
      
    5. 當所有 Pod 都處於 Running 狀態時,請取得前端服務外部 IP 位址:

      kubectl get service frontend | awk '{print $4}'
      
    6. 在網路瀏覽器視窗中,開啟 kubectl get service 指令輸出內容中顯示的 IP 位址,存取 Cymbal Bank 執行個體。

      系統會自動填入預設憑證,方便您登入應用程式,並查看部分範例交易和餘額。您不需採取任何特定行動,只要確認 Cymbal Bank 順利運作即可。所有服務可能需要一到兩分鐘才能正確啟動,讓您登入。請等到所有 Pod 都處於 Running 狀態,且您能順利登入 Cymbal Bank 網站,再前往下一個部分並模擬區域故障。

    模擬區域故障

    在本節中,您將模擬其中一個可用區發生故障。您可以透過三種不同方式模擬容錯移轉。您只需要選擇一種方法。模擬區域故障,並使用符合自身法規遵循目的的方法,驗證應用程式是否正確回應。

    減少節點集區區域

    根據預設,區域叢集的節點集區會包含區域內所有可用區的節點。在下圖中,Cloud 負載平衡會將流量分配到橫跨三個區域的節點集區。每個區域都有兩個節點,Pod 可在任何區域的節點中執行。

    負載平衡器會將流量導向在三個區域中執行的區域叢集。每個可用區都有兩個節點。

    在本節中,您將更新節點集區,只在三個區域中的兩個區域執行,藉此模擬區域故障。這種做法可驗證應用程式是否能正確地在其他區域重新分配 Pod 和流量,以因應區域中斷問題。

    如要更新節點集區,使其只在特定區域中執行並模擬失敗,請完成下列步驟:

    1. 檢查區域叢集和服務的可用性:

      kubectl get po -o wide \
      kubectl get node -o=custom-columns='NAME:.metadata.name,ZONE:.metadata.labels.topology\.kubernetes\.io/zone,INT_IP:.status.addresses[0].address'
      

      結果類似下列範例輸出內容:

      NAME                                  READY   STATUS    RESTARTS   AGE     IP          NODE
      accounts-db-0                         1/1     Running   0          6m30s   10.28.1.5   regional-cluster-1-default-pool-node3
      balancereader-7dc7d9ff57-shwg5        1/1     Running   0          6m30s   10.28.5.6   regional-cluster-1-default-pool-node1
      contacts-7ddc76d94-qv4x5              1/1     Running   0          6m29s   10.28.4.6   regional-cluster-1-default-pool-node2
      frontend-747b84bff4-xvjxq             1/1     Running   0          6m29s   10.28.3.6   regional-cluster-1-default-pool-node6
      ledger-db-0                           1/1     Running   0          6m29s   10.28.5.7   regional-cluster-1-default-pool-node1
      ledgerwriter-f6cc7889d-mttmb          1/1     Running   0          6m29s   10.28.1.6   regional-cluster-1-default-pool-node3
      loadgenerator-57d4cb57cc-7fvrc        1/1     Running   0          6m29s   10.28.4.7   regional-cluster-1-default-pool-node2
      transactionhistory-5dd7c7fd77-cmc2w   1/1     Running   0          6m29s   10.28.3.7   regional-cluster-1-default-pool-node6
      userservice-cd5ddb4bb-zfr2g           1/1     Running   0          6m28s   10.28.5.8   regional-cluster-1-default-pool-node1
      
      NAME                                    ZONE                INT_IP
      regional-cluster-1-default-pool-node5   asia-southeast1-c   10.148.0.6
      regional-cluster-1-default-pool-node6   asia-southeast1-c   10.148.0.7
      regional-cluster-1-default-pool-node2   asia-southeast1-a   10.148.0.8
      regional-cluster-1-default-pool-node1   asia-southeast1-a   10.148.0.9
      regional-cluster-1-default-pool-node3   asia-southeast1-b   10.148.0.5
      regional-cluster-1-default-pool-node4   asia-southeast1-b   10.148.0.4
      

      在本例中,所有 Cymbal Bank 工作負載都會部署在所有可用區。如要模擬失敗,請停用其中一個區域,例如部署前端服務的 asia-southeast1-c

    2. 模擬區域服務中斷情形。更新現有節點集區 (default-pool),只指定三個區域中的兩個:

        gcloud container node-pools update default-pool \
          --cluster=CLUSTER_NAME \
          --node-locations=ZONE_A, ZONE_B \
          --region=REGION
      

      ZONE_A, ZONE_B 替換為您希望節點集區繼續執行的兩個區域。

    3. 更新節點集區後,請確認微服務是否可用:

      kubectl get po -o wide
      kubectl get node -o=custom-columns='NAME:.metadata.name,ZONE:.metadata.labels.topology\.kubernetes\.io/zone,INT_IP:.status.addresses[0].address'
      

      輸出內容應如下列範例所示:

      NAME                                    ZONE                INT_IP
      regional-cluster-1-default-pool-node2   asia-southeast1-a   10.148.0.8
      regional-cluster-1-default-pool-node1   asia-southeast1-a   10.148.0.9
      regional-cluster-1-default-pool-node3   asia-southeast1-b   10.148.0.5
      regional-cluster-1-default-pool-node4   asia-southeast1-b   10.148.0.4
      
      NAME                                  READY   STATUS    RESTARTS   AGE     IP          NODE
      accounts-db-0                         1/1     Running   0          28m     10.28.1.5   regional-cluster-1-default-pool-node3
      balancereader-7dc7d9ff57-shwg5        1/1     Running   0          28m     10.28.5.6   regional-cluster-1-default-pool-node1
      contacts-7ddc76d94-qv4x5              1/1     Running   0          28m     10.28.4.6   regional-cluster-1-default-pool-node2
      frontend-747b84bff4-mdnkd             1/1     Running   0          9m21s   10.28.1.7   regional-cluster-1-default-pool-node3
      ledger-db-0                           1/1     Running   0          28m     10.28.5.7   regional-cluster-1-default-pool-node1
      ledgerwriter-f6cc7889d-mttmb          1/1     Running   0          28m     10.28.1.6   regional-cluster-1-default-pool-node3
      loadgenerator-57d4cb57cc-7fvrc        1/1     Running   0          28m     10.28.4.7   regional-cluster-1-default-pool-node2
      transactionhistory-5dd7c7fd77-w2vqs   1/1     Running   0          9m20s   10.28.4.8   regional-cluster-1-default-pool-node2
      userservice-cd5ddb4bb-zfr2g           1/1     Running   0          28m     10.28.5.8   regional-cluster-1-default-pool-node1
      

      在本範例輸出內容中,asia-southeast1-c 已無法使用。您仍可透過網址 http://EXTERNAL_IP,從瀏覽器存取前端服務。即使其中一個區域不再適用,使用者仍可執行存款和付款動作。

    使用單一區域節點集區

    在本節中,您將刪除兩個節點集區,模擬區域故障情形。這個方法會驗證應用程式是否能正確地在其他可用區的節點集區中重新分配 Pod 和流量,以因應節點集區遺失的情況。如要在區域叢集上模擬區域中斷,請展開先前建立的基本叢集,在多個節點集區中執行 Cymbal Bank 應用程式。與第一個範例 (更新節點集區中的現用可用區) 相比,這個模擬可用區中斷的方法更能反映實際的可用區故障情形,因為叢集中通常會有多個節點集區:

    負載平衡器會將流量導向在三個節點集區中執行的區域叢集。預設節點集區會跨所有可用區執行,另外兩個節點集區則分別在單一可用區中執行。

    您在本節中建立的叢集會模擬單一可用區節點集區故障,並包含下列元件:

    • 預設節點集區:通常在您建立地區 GKE Standard 叢集時建立,屬於多區域節點集區 (default-pool)。

      這個叢集包含單一 default-pool,是您稍早在此文件中建立的。

    • 額外的節點集區 (zonal-node-pool-1zonal-node-pool-2),同樣會執行範例 Cymbal Bank 應用程式的服務。

    圖中的虛線顯示,只有在模擬 default-poolzonal-node-pool-1 中的故障後,流量才會提供服務。zonal-node-pool-2

    如要建立其他節點集區並模擬故障,請完成下列步驟:

    1. 檢查區域叢集的可用性:

      gcloud container node-pools list \
          --cluster=CLUSTER_NAME \
          --region REGION
      
      kubectl get node -o=custom-columns='NAME:.metadata.name,ZONE:.metadata.labels.topology\.kubernetes\.io/zone,INT_IP:.status.addresses[0].address'
      

      結果類似下列範例輸出內容:

      NAME: default-pool
      MACHINE_TYPE: e2-medium
      DISK_SIZE_GB: 100
      NODE_VERSION: 1.27.8-gke.1067004
      
      NAME                                         ZONE.               INT_IP
      regional-cluster-1-default-pool-node5-pzmc   asia-southeast1-c   10.148.0.6
      regional-cluster-1-default-pool-node6-qf1l   asia-southeast1-c   10.148.0.7
      regional-cluster-1-default-pool-node2-dlk2   asia-southeast1-a   10.148.0.8
      regional-cluster-1-default-pool-node1-pkfd   asia-southeast1-a   10.148.0.9
      regional-cluster-1-default-pool-node3-6b6n   asia-southeast1-b   10.148.0.5
      regional-cluster-1-default-pool-node4-h0lc   asia-southeast1-b   10.148.0.4
      

      在這個範例輸出中,所有 Cymbal Bank Pod 都部署在相同叢集下的所有可用區,並在現有的 default-pool 中執行。

    2. 建立兩個新的單一區域節點集區:

      gcloud beta container node-pools create zonal-node-pool-1 \
        --cluster CLUSTER_NAME \
        --region REGION \
        --num-nodes 4 \
        --node-locations ZONE_A
      
      gcloud beta container node-pools create zonal-node-pool-2 \
          --cluster CLUSTER_NAME \
          --region REGION \
          --num-nodes 4 \
          --node-locations ZONE_B
      

      ZONE_AZONE_B 替換為要執行新單一區域節點集區的兩個區域。

    3. 如要模擬區域故障,請刪除 default-pool 區域節點集區和其中一個新的單一區域節點集區:

      gcloud container node-pools delete default-pool \
          --cluster=CLUSTER_NAME \
          --region=REGION
      
      gcloud container node-pools delete zonal-node-pool-1 \
          --cluster=CLUSTER_NAME \
          --region=REGION
      

      node-pool 刪除程序期間,工作負載會關閉,並重新排定至其他可用的節點集區。發生這種情況時,服務和部署作業將無法使用。這表示您需要為 DR 報告或文件指定停機時間範圍。

      確認微服務是否持續可用:

      kubectl get po -o wide \
      kubectl get node -o=custom-columns='NAME:.metadata.name,ZONE:.metadata.labels.topology\.kubernetes\.io/zone,INT_IP:.status.addresses[0].address'
      

      輸出內容應該會與下方示例類似:

      NAME                                  ZONE                INT_IP
      regional-cluster-1-node-pool3-node1   asia-southeast1-b   10.148.0.8
      regional-cluster-1-node-pool3-node2   asia-southeast1-b   10.148.0.9
      regional-cluster-1-node-pool3-node3   asia-southeast1-b   10.148.0.5
      regional-cluster-1-node-pool3-node4   asia-southeast1-b   10.148.0.4
      
      NAME                                  READY   STATUS    RESTARTS   AGE     IP          NODE
      accounts-db-0                         1/1     Running   0          28m     10.28.1.5   regional-cluster-1-zonal-node-pool-2-node3
      balancereader-7dc7d9ff57-shwg5        1/1     Running   0          28m     10.28.5.6   regional-cluster-1-zonal-node-pool-2-node1
      contacts-7ddc76d94-qv4x5              1/1     Running   0          28m     10.28.4.6   regional-cluster-1-zonal-node-pool-2-node2
      frontend-747b84bff4-mdnkd             1/1     Running   0          9m21s   10.28.1.7   regional-cluster-1-zonal-node-pool-2-node3
      ledger-db-0                           1/1     Running   0          28m     10.28.5.7   regional-cluster-1-zonal-node-pool-2-node4
      ledgerwriter-f6cc7889d-mttmb          1/1     Running   0          28m     10.28.1.6   regional-cluster-1-zonal-node-pool-2-node3
      loadgenerator-57d4cb57cc-7fvrc        1/1     Running   0          28m     10.28.4.7   regional-cluster-1-zonal-node-pool-2-node2
      transactionhistory-5dd7c7fd77-w2vqs   1/1     Running   0          9m20s   10.28.4.8   regional-cluster-1-zonal-node-pool-2-node2
      userservice-cd5ddb4bb-zfr2g           1/1     Running   0          28m     10.28.5.8   regional-cluster-1-zonal-node-pool-2-node1
      

      在這個範例輸出內容中,由於 default-poolzonal-node-pool-1 不再存在,因此所有服務都會在 zonal-node-pool-2 中執行。

    隔離並排空可用區中的節點

    在本節中,您將封鎖並排空叢集中的特定節點。您會封鎖並清空單一區域中的所有節點,模擬該區域中節點上執行的 Pod 遺失:

    負載平衡器會將流量導向在三個區域中執行的區域叢集。每個可用區包含兩個節點,而 Cymbal Bank 範例應用程式 Pod 會在所有可用區和節點中執行。

    在這張圖中,您會隔離並排空第一個可用區中的節點。其他兩個區域中的節點會繼續執行。這種做法會驗證應用程式是否能正確地在其他可用區執行的節點之間重新分配 Pod 和流量,以因應某個可用區中所有節點的損失。

    如要封鎖並排空其中一個區域中的節點,模擬失敗情況,請完成下列步驟:

    1. 檢查區域叢集和服務的可用性。查看目標失敗區域的節點名稱。您想指定前端 Pod 執行的區域:

      kubectl get pods -o wide
      

      輸出內容應如下列範例所示:

      NAME                                  READY   STATUS    RESTARTS   AGE     IP           NODE
      accounts-db-0                         1/1     Running   0          4m7s    10.96.4.4    regional-cluster-1-default-pool-node2
      balancereader-7dc7d9ff57-lv4z7        1/1     Running   0          4m7s    10.96.1.5    regional-cluster-1-default-pool-node1
      contacts-7ddc76d94-wxvg5              1/1     Running   0          4m7s    10.96.6.11   regional-cluster-1-default-pool-node3
      frontend-747b84bff4-gvktl             1/1     Running   0          4m7s    10.96.1.4    regional-cluster-1-default-pool-node1
      ledger-db-0                           1/1     Running   0          4m7s    10.96.4.5    regional-cluster-1-default-pool-node2
      ledger-db-1                           1/1     Running   0          3m50s   10.96.0.13   regional-cluster-1-default-pool-node5
      ledgerwriter-f6cc7889d-4hqbm          1/1     Running   0          4m6s    10.96.0.12   regional-cluster-1-default-pool-node5
      loadgenerator-57d4cb57cc-fmq52        1/1     Running   0          4m6s    10.96.4.6    regional-cluster-1-default-pool-node2
      transactionhistory-5dd7c7fd77-72zpx   1/1     Running   0          4m6s    10.96.6.12   regional-cluster-1-default-pool-node3
      userservice-cd5ddb4bb-b7862           1/1     Running   0          4m6s    10.96.1.6    regional-cluster-1-default-pool-node1
      
    2. 將先前輸出內容中列出的 Pod 與節點的可用區建立關聯:

      kubectl get node -o=custom-columns='NAME:.metadata.name,ZONE:.metadata.labels.topology\.kubernetes\.io/zone,INT_IP:.status.addresses[0].address'
      

      輸出內容應如下列範例所示:

      NAME                                    ZONE                INT_IP
      regional-cluster-1-default-pool-node1   asia-southeast1-b   10.148.0.41
      regional-cluster-1-default-pool-node2   asia-southeast1-b   10.148.0.42
      regional-cluster-1-default-pool-node3   asia-southeast1-a   10.148.0.37
      regional-cluster-1-default-pool-node4   asia-southeast1-a   10.148.0.38
      regional-cluster-1-default-pool-node5   asia-southeast1-c   10.148.0.40
      regional-cluster-1-default-pool-node6   asia-southeast1-c   10.148.0.39
      

      在上一個範例輸出內容中,前端 Pod 位於可用區 asia-southeast1-bregional-cluster-1-default-pool-node1

      在下一個步驟中,您會追蹤可用區 asia-southeast1-b 中的所有節點,在本範例輸出內容中,這些節點為 regional-cluster-1-default-pool-node1regional-cluster-1-default-pool-node2

    3. 在其中一個可用區中,隔離並排空目標節點。在本例中,這是 asia-southeast1-b 中的兩個節點:

      kubectl drain regional-cluster-1-default-pool-node1 \
          --delete-emptydir-data --ignore-daemonsets
      
      kubectl drain regional-cluster-1-default-pool-node2 \
          --delete-emptydir-data --ignore-daemonsets
      

      這個指令會將節點標示為不可排程,並模擬節點故障。Kubernetes 會將 Pod 重新排程到正常運作區域的其他節點。

    4. 查看先前在故障區域節點上執行的前端 Pod 和其他 Cymbal Bank Pod 範例,現在重新排定的位置:

      kubectl get po -o wide
      kubectl get node -o=custom-columns='NAME:.metadata.name,ZONE:.metadata.labels.topology\.kubernetes\.io/zone,INT_IP:.status.addresses[0].address'
      

      輸出內容應如下列範例所示:

      NAME                                  READY   STATUS    RESTARTS   AGE     IP           NODE
      accounts-db-0                         1/1     Running   0          4m7s    10.96.4.4    regional-cluster-1-default-pool-node4
      balancereader-7dc7d9ff57-lv4z7        1/1     Running   0          4m7s    10.96.1.5    regional-cluster-1-default-pool-node6
      contacts-7ddc76d94-wxvg5              1/1     Running   0          4m7s    10.96.6.11   regional-cluster-1-default-pool-node3
      frontend-747b84bff4-gvktl             1/1     Running   0          4m7s    10.96.1.4    regional-cluster-1-default-pool-node3
      ledger-db-0                           1/1     Running   0          4m7s    10.96.4.5    regional-cluster-1-default-pool-node6
      ledger-db-1                           1/1     Running   0          3m50s   10.96.0.13   regional-cluster-1-default-pool-node5
      ledgerwriter-f6cc7889d-4hqbm          1/1     Running   0          4m6s    10.96.0.12   regional-cluster-1-default-pool-node5
      loadgenerator-57d4cb57cc-fmq52        1/1     Running   0          4m6s    10.96.4.6    regional-cluster-1-default-pool-node4
      transactionhistory-5dd7c7fd77-72zpx   1/1     Running   0          4m6s    10.96.6.12   regional-cluster-1-default-pool-node3
      userservice-cd5ddb4bb-b7862           1/1     Running   0          4m6s    10.96.1.6    regional-cluster-1-default-pool-node3
      
      NAME                                    ZONE                INT_IP
      regional-cluster-1-default-pool-node3   asia-southeast1-a   10.148.0.37
      regional-cluster-1-default-pool-node4   asia-southeast1-a   10.148.0.38
      regional-cluster-1-default-pool-node5   asia-southeast1-c   10.148.0.40
      regional-cluster-1-default-pool-node6   asia-southeast1-c   10.148.0.39
      

      在這個輸出範例中,沒有任何 Cymbal Bank Pod 在封鎖節點上執行,所有 Pod 現在只在其他兩個區域中執行。

      節點上的 Pod 中斷預算 (PDB) 可能會封鎖節點排空作業。在執行封鎖和排空動作前,請先評估 PDB 政策。如要進一步瞭解 PDB 及其與管理中斷的關係,請參閱如何確保 GKE 叢集的可靠性和正常運作時間。

    清除所用資源

    如要避免系統向您的 Google Cloud 帳戶收取本教學課程所用資源的費用,請按照下列步驟操作:

    刪除專案

    如要避免系統向您收費,最簡單的方法就是刪除您在教學課程中建立的專案。

    1. In the Google Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

    後續步驟