本页面介绍区域级集群在 Google Kubernetes Engine (GKE) 中的工作原理。
通过在某个区域的多个可用区中复制控制平面和节点,区域级集群可以提高集群的可用性。
区域级集群不仅具有多可用区级集群的所有优势,而且具有以下额外优势:
- 应对单个可用区故障的能力:区域级集群在一个区域内提供,而不是一个区域内的单个可用区。如果单个可用区不可用,您的控制平面和资源并不会受到影响。
- 持续控制平面升级、控制平面大小调整以及缩短控制平面故障造成的停机时间。凭借控制平面的冗余副本,区域级集群提供了可用性更高的 Kubernetes API,因此即使在升级期间,您也可以访问控制平面。
GKE Autopilot 集群始终为区域级集群。如果您使用 GKE Standard,则可以选择创建区域级、可用区级或多区域级集群。如需了解不同的集群可用性类型,请参阅集群配置选项简介。
在区域级集群(包括 Autopilot 集群)中,控制平面会复制到一个区域的三个可用区中。GKE 会自动在同一区域内的各可用区之间复制节点。在 Standard 集群和节点池中,您可以选择手动指定运行节点的可用区。所有可用区都必须与控制平面位于同一区域内。
创建区域级集群后,您无法将其更改为可用区级集群。
地区级集群的工作原理
区域级集群会将集群控制平面和节点复制到单个区域内的多个可用区中。例如,使用默认配置时,us-east1
区域中的区域级集群会在以下三个 us-east1
可用区中创建控制平面和节点的副本:us-east1-b
、us-east1-c
、和 us-east1-d
。如果基础架构发生服务中断,Autopilot 工作负载会继续运行,并且 GKE 会自动重新平衡节点。如果您使用 Standard 集群,则必须手动重新平衡节点或使用集群自动扩缩器重新平衡节点。
限制
为区域性 Standard 集群创建的默认节点池包含九个节点(每个可用区三个),这些节点均匀分布在一个区域的三个可用区中。对于公共集群,这将使用九个 IP 地址。如果需要,您可以将节点数减少到每个可用区一个。对于新创建的 Cloud Billing 账号,每个区域仅分配八个 IP 地址,因此您可能需要针对区域级已用 IP 地址申请增加配额,具体取决于您的区域级集群的大小。如果可用的已用 IP 地址太少,则创建集群的操作将失败。
如要在区域性集群中运行 GPU,请选择一个区域,该区域至少有一个可用所请求 GPU 的可用区。在创建节点池时,您必须使用
--node-locations
标志,以指定包含所请求 GPU 的一个或多个可用区。如果选择的区域没有至少具备一个能提供所请求的 GPU 的可用区,则您可能会看到如下错误:
ERROR: (gcloud.container.clusters.create) ResponseError: code=400, message= Accelerator type "nvidia-l4" does not exist in zone europe-west3-a.
如需查看可使用 GPU 的区域和可用区的完整列表,请参阅在 Compute Engine 上使用 GPU。
Standard 模式节点池的可用区必须与集群的控制平面位于同一区域。如果需要,您可以更改集群的可用区,这将导致所有新节点和现有节点跨越这些可用区。
价格
所有 Autopilot 集群都是区域级集群,并受 Autopilot 价格模式的约束。
在 Standard 模式下,区域级集群需要的项目区域配额比类似的可用区级或多可用区级集群多。在使用区域级集群之前,请务必了解您的配额和 Standard 价格。如果遇到 Insufficient regional quota to satisfy request for resource
错误,则表示您的请求超出了当前区域的可用配额。
此外,您需要为跨区域的节点间流量付费。例如,如果在一个区域中运行的工作负载需要与另一个区域中的工作负载通信,则跨区域的流量会产生费用。如需了解详情,请参阅 Compute Engine 价格页面上的同一地区内不同区域之间的出站流量(每 GB)。
地区级集群中的永久性存储
区域永久性磁盘是区域资源,而地区永久性磁盘是多区域资源。在添加永久性存储空间时,除非指定了区域,否则 GKE 会将磁盘分配给单个随机区域。如需了解如何控制区域,请参阅永久性磁盘中的区域。
自动扩缩区域级集群
使用集群自动扩缩器来自动扩缩区域级 Standard 模式集群中的节点池时,请牢记以下注意事项。
您还可以详细了解区域级集群的自动扩缩限制,或者集群自动扩缩器如何在各个可用区之间实现平衡。
这些注意事项仅适用于具有集群自动扩缩器的 Standard 模式集群。
超额预配扩缩限制
为在发生罕见区域性故障的情况下保持容量,您可以允许 GKE 超额预配扩缩限制,即使当某些区域不可用时也能确保最低程度的可用性。
例如,如果为跨越三个区域的集群超额预配 150% 的容量(其中 50% 为多余容量),您可以确保在集群的三分之一容量丢失时,所有流量都会路由到可用区域。在上述示例中,您可以通过为每个区域指定最多六个节点(而不是四个节点)来实现这一点。如果一个区域发生故障,则集群将在其余区域中扩容到 12 个节点。
同样,如果为跨越两个区域的集群超额预配 200% 的容量,则可以确保在集群的一半容量丢失时,所有流量都会重新路由。
您可以详细了解集群自动扩缩器,或者阅读 Kubernetes 文档中的自动扩缩常见问题解答。