模拟 GKE 区域级集群中的可用区故障


一项常见的监管要求是,公司必须能够证明其灾难恢复 (DR) 能力。对于在云中运行的应用,此要求包括当一个可用区中托管的服务器在一段时间内不可用时服务的可靠性和可用性。本文档适用于希望了解如何在使用 Google Kubernetes Engine (GKE) Standard 区域级集群时模拟可用区故障切换的管理员、架构师、运维人员以及备份和灾难恢复 (DR) 管理员。

GKE 区域级集群在用户选择的区域中创建,并在位于所选区域内多个可用区的虚拟机上运行控制平面。GKE Autopilot 集群始终为区域级集群,而 GKE Standard 集群可以是区域级集群或可用区级集群。本教程使用 GKE Standard 区域级集群。集群节点通过负载均衡器与控制平面通信,这意味着节点位置和控制平面虚拟机位置并非始终匹配。在 Google Cloud 控制台中,使用区域级集群时,您无法停用特定可用区。如需了解详情,请参阅 GKE 集群架构

本教程提供了三种不同的方法来模拟可用区故障。您可以模拟可用区故障,并使用自己的合规性所需的任何方法验证正确的应用响应。

本文档中的方法也适用于可用区级集群,包括单可用区和多可用区集群。这些方法仅会影响目标可用区中的节点,GKE 控制平面不受影响。

目标

  • 使用默认配置创建区域级 GKE Standard 集群。
  • 将示例微服务应用部署到区域级集群。
  • 使用以下三种方法之一模拟可用区服务中断:
    • 减少区域级集群中节点池的可用区。
    • 使用单可用区节点池。
    • 封锁并排空目标故障可用区的节点。
  • 验证微服务可用性。

费用

本教程使用 Google Cloud 的以下收费组件:

  • Compute Engine
  • GKE Standard 模式集群

您可使用价格计算器根据您的预计使用情况来估算费用。

准备工作

  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. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. 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.

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

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

    gcloud services enable container.googleapis.com compute.googleapis.com
  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

    gcloud init
  9. 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.

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

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

    gcloud services enable container.googleapis.com compute.googleapis.com

创建区域级标准集群

在模拟可用区故障之前,先创建一个具有多可用区节点池的区域级集群。集群的控制平面和节点将在指定区域的多个可用区中复制。

使用 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. 在 Shell 中,克隆以下 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. 几分钟后,您应该会看到处于 Running 状态的 Pod:

    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 Load Balancing 将流量分配到跨三个可用区的节点池。每个可用区都有两个节点,您的 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 的集群就是您之前在本文档中创建的集群。

  • 也为 Cymbal Bank 示例应用运行服务的其他节点池(zonal-node-pool-1zonal-node-pool-2)。

图中的虚线表示在您模拟 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 删除过程中,系统会关闭工作负载并将其重新安排到其他可用节点池。发生这种情况时,Service 和 Deployment 将不可用。此行为意味着,您需要为灾难恢复报告或文档指定停机时间。

    验证微服务的持续可用性:

    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 不复存在,因此所有 Service 都在 zonal-node-pool-2 中运行。

封锁并排空可用区中的节点

在本部分中,您将封锁并排空集群中的特定节点。您可以封锁并排空单个可用区中的所有节点,从而模拟在该可用区的这些节点上运行的 Pod 丢失的情况:

负载均衡器会将流量定向到在三个可用区运行的区域级集群。每个可用区包含两个节点,Cymbal Bank 示例应用 Pod 在所有可用区和节点中运行。

在此图中,您将封锁并排空第一个可用区中的节点。其他两个可用区中的节点继续运行。此方法通过将 Pod 和流量正确地重新分布到在其他可用区运行的节点之间,验证您的应用可以响应一个可用区中所有节点丢失的情况。

如需封锁并排空其中一个可用区中的节点(模拟故障),请完成以下步骤:

  1. 检查区域级集群和 Service 的可用性。查看目标故障可用区的节点名称。您希望指定运行前端 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.

后续步骤