本文档介绍了如何设计弹性 Google Kubernetes Engine (GKE) 集群和工作负载调度策略,以帮助您获取 GPU、TPU 和高性能 CPU 等资源。通过在Cloud de Confiance by S3NS 和 Compute Advisor(预览版)中利用 Gemini,您可以防止 Pod 处于待处理状态,并提高 AI 工作负载的可靠调度。
本文档适用于管理 GKE 基础设施并希望优化容量规划和调度的 Cloud Architect、平台管理员和运维人员。
GKE 计算容量的灵活性、效率和可用性概览
Kubernetes 调度依赖于声明的资源请求。在调度大规模加速器(例如 GPU 或 TPU)时,如果特定硬件不可用,严格的资源请求可能会导致集群无法扩容。您可以使用以下功能优化 GKE 上的容量可用性:
- 节点池自动创建:动态创建多系列节点池。
- 工作负载级后备:配置为接受备用硬件的容忍设置和节点选择器。
- 地理和区域调度:GKE 多可用区和多区域功能。
- 预留管理:在请求按需资源之前,先使用预购的容量。
在 GKE 上实现计算容量灵活性、效率和可用性的最佳实践
本部分提供了在 GKE 上调度工作负载时提高容量可用性的建议。这些最佳实践涵盖了设计灵活的硬件要求、配置节点池自动创建以及利用地理分布来适应资源限制等策略。节点池自动创建功能会根据 Pod 规范自动管理节点池。您无需预定义节点池,只需在 Pod 清单中指定资源要求,让 GKE 动态创建节点。
您还可以使用 Compute Advisor(预览版)发现并实施以下最佳实践。如需了解详情,请参阅使用 Compute Advisor。
提高计算容量可用性的选项
为了优化容量可用性,您可以指示 GKE 避免将工作负载绑定到单个静态机器家族或加速器类型。以下示例展示了如何为不同的工作负载类别配置灵活节点池和 Pod 亲和性规则。您选择的具体替代方案取决于应用的资源需求:
通用 CPU 节点池:
- 主要示例:N4(基于 Intel 的通用型)。
- 替代方案示例:N4D(AMD EPYC 通用)、C4 或 C3(Intel 通用)或 C4D 或 C3D(AMD EPYC 通用)。
- 实现模式:使用自定义 ComputeClass 或节点亲和性规则配置 Pod 规范,以允许跨多个机器家族标签(例如
["n4", "n4d", "c4", "c4d"]中的cloud.google.com/machine-family)进行调度。此配置让 GKE 能够预配任何具有可用容量的池。
GPU 节点池:
- 主要示例:A3 系列 (NVIDIA H100 GPU) 或 A4 系列 (NVIDIA B200 GPU)。
- 替代方案示例:G2 系列(NVIDIA L4 GPU)或其他加速器层级。
- 实现模式:为不同的 GPU 层级配置单独的节点池或 ComputeClass。对于可以跨加速器代系运行的推理或服务工作负载,如果主要加速器预配受到限制,请允许 Pod 回退到 G2 (L4) 或备用 GPU 池。
TPU 节点池:
- 主要示例:TPU Ironwood (TPU7x)。
- 替代方案示例:TPU v6 (Trillium) 或 TPU v5(v5e 或 v5p)。
- 实现模式:TPU 切片预配可能会受到很大限制。设计具有框架级灵活性(例如,支持可变切片拓扑的 JAX 或 PyTorch 配置)的训练工作负载,以便在 TPU Ironwood (TPU7x) 容量不可用时部署在 v6 或 v5 切片上。
下表总结了针对不同类型工作负载的主要选择和硬件替代方案:
| 工作负载类型 | 主要选择示例 | 示例替代方案 | 架构注意事项 |
|---|---|---|---|
| 系统或核心工作负载 | N4 | N4D、C4、C4D、C3、C3D | 涵盖现代 Intel 和 AMD 硬件池,用于节点池自动创建。 |
| GPU 推理和处理 | A3 (H100) 或 A4 (B200) | G2 (L4) | 灵活定位到成本较低或可用性较高的 GPU 节点池。 |
| TPU 模型训练 | TPU Ironwood (TPU7x) | TPU v6、TPU v5(v5e 或 v5p) | 利用灵活的拓扑进行基于切片的调度。 |
实现节点池自动创建和 ComputeClass
如需优化容量可用性,请将节点池自动创建与 ComputeClasses 结合使用。以下列表包含最佳实践:
定义 ComputeClass:创建 ComputeClass 资源,指定机器家族、GPU 类型或预配模型的优先级列表。GKE 会尝试使用类中可用的最高优先级配置来预配节点。优先后备列表可显著帮助您获取工作负载所需的资源。例如,为了防止 GKE 在首选专用加速器不可用时回退到通用机器,请将
whenUnsatisfiable: DoNotScaleUp设置添加到 ComputeClass 配置中。如需了解详情,请参阅使用自定义 ComputeClass 控制自动扩缩的节点属性。为无状态或容忍中断的工作负载启用主动迁移 (
optimizeRulePriority: true):在 ComputeClass 中配置主动迁移,以便在相应位置的容量恢复时,GKE 自动封锁、排空后备节点,并将其替换为优先级更高的机器系列。使用动态 StorageClass 进行跨代回退:在 GKE 1.35.3-gke.1290000 版及更高版本中,当 ComputeClass 跨越仅 Hyperdisk 系列(例如 C4、C4D 和 N4)和 Persistent Disk 系列(例如 N2 和 N2D)时,请配置有状态工作负载,以便 GKE 动态选择兼容的磁盘类型。为此,请使用具有自动磁盘类型选择 (
parameters.type: dynamic) 和volumeBindingMode: WaitForFirstConsumer设置的 StorageClass。在 Pod 规范中引用 ComputeClass:在工作负载 Pod 规范中,使用
cloud.google.com/compute-class标签定位自定义 ComputeClass,而不是特定的机器家族或 GPU 类型。如需了解详情,请参阅在工作负载中请求 ComputeClass。定义多个容忍度:如果您不使用 ComputeClass,请在 Pod 规范中使用节点亲和性规则,以允许一系列机器家族(例如
["n4", "n4d", "c4", "c4d"]中的cloud.google.com/machine-family)。如需了解详情,请参阅配置节点池自动创建。
GKE 上的地理位置和多区域灵活性
如需提高容量可用性,请部署跨多个可用区的 GKE 集群,或运行多集群架构:
多可用区集群:确保节点池配置为在区域内的所有可用区中自动扩缩。
多区域集群联合:对于大型异步作业(例如离线批量推理或分布式训练),部署多集群编排器(例如 Kueue 或 Cluster Director),以全局方式将工作负载排入队列,并将其分派到具有可用容量的区域。
在 Spot 虚拟机上运行的 Pod:通过添加容忍设置并指示 GKE 在不同可用区中分配多余容量,在 Spot 虚拟机上运行可中断的工作负载。
在 GKE 中提高计算容量的灵活性、效率和可用性的其他最佳实践
除了硬件多样化之外,还应采用以下 GKE 最佳实践,以优化集群伸缩缩成功率:
- 使用容量缓冲区:主动预留备用节点容量,以便高优先级 AI 工作负载可以立即调度,而无需等待新节点预配。您可以将声明式容量缓冲区与主动缓冲区策略结合使用,以便集群自动扩缩器自动维护备用容量。
- 使用灵活启动(带已排队的预配):对于大型批处理和 AI 模型训练作业,请使用灵活启动(带已排队的预配),该功能与 Kueue 和动态工作负载调度器集成。灵活启动(带已排队的预配)采用全有或全无的原子节点分配方式,可防止部分集群扩容失败。如需了解详情,请参阅通过灵活启动(带已排队的预配)运行大规模工作负载。
- 启用映像流式传输和容器映像预加载:对于大型 AI 容器映像(例如超过 10 GB 的 PyTorch 或 TensorFlow 映像),请启用 GKE 映像流式传输或使用辅助启动磁盘进行映像预加载。此配置可缩短节点预热时间,从而让新预配的节点在几秒钟内开始运行工作负载。如需了解详情,请参阅使用映像流式传输拉取容器映像和使用辅助启动磁盘预加载数据或容器映像。
- 将集群自动扩缩器位置政策设置为
ANY:使用ANY位置政策配置节点池(尤其是 Spot 虚拟机或灵活启动)。此设置会指示集群自动扩缩器在所有指定可用区中搜索请求的容量。集群自动扩缩器会通过平衡节点数量来寻找容量。如需了解详情,请参阅集群自动扩缩器概览。 - 通过 GPU 共享优化加速器利用率:对于不需要专用 GPU 的工作负载,请使用 GPU 分时、多实例 GPU (MIG) 或 NVIDIA MPS,允许多个容器共享单个加速器。这种方法可优化节点池的有效容量。如需了解详情,请参阅 GKE 中的 GPU 共享策略简介。
使用 Compute Advisor
Compute Advisor 是Cloud de Confiance 控制台中由 AI 赋能的界面,由 Gemini 提供支持,可帮助您为 GKE 设计弹性好且经济实惠的架构。
Compute Advisor 可为灵活启动型虚拟机和 Spot 虚拟机提供近乎实时的可用性指导,同时在部署前验证组织的政策和资源配额。Compute Advisor 不会为需要按需资源的工作负载提供可用性指导。
如需在 Cloud de Confiance 控制台中访问 Gemini,请完成以下步骤:
-
在 Cloud de Confiance 控制台中,前往概览页面。
-
在使用 Compute Advisor 设计基础架构部分中,提交提示。Gemini 开始生成回答。
-
如需生成架构建议,请在 Compute Advisor 中运行以下示例提示之一。当您点击在 Compute Advisor 中运行提示按钮时, Cloud de Confiance 控制台可能需要超过 15 秒的时间才能加载:
常规加速器策略:
应用场景:在设计集群配置时,使用此提示分析区域容量信号,并获取有关机器类型、可用区和回退调度策略的建议。
Configure a GKE cluster to improve chances of obtaining scarce GPU or TPU capacity.地理位置灵活性和后备方案:
应用场景:在设计多集群架构或全局作业排队系统(例如使用 Kueue)时,使用此提示可根据资源可用性跨区域转移工作负载执行。
Configure multi-region fallbacks and geographic scheduling on GKE to increase GPU availability.优先预留使用:
应用场景:使用此提示可为 Pod 亲和性和自动扩缩规则生成 YAML 配置模式,这些规则会优先考虑预留容量。
Configure GKE autoscaling rules and Pod specs to prioritize consuming active reservations before scaling into on-demand pools.用于后备优先级的 ComputeClass:
应用场景:使用此提示为 ComputeClass CustomResourceDefinition 生成 YAML 清单,该清单会优先使用高性能 GPU,但包含较低层级的回退,以确保工作负载调度。
Define a ComputeClass manifest for GKE to prioritize A3 GPU nodes with automatic fallbacks to G2 (L4) GPUs.节点池自动创建(用于多样化):
应用场景:使用此提示编写 YAML 清单,用于设置 GKE 集群自动扩缩器资源限制和 Pod 亲和性规则,使 NAP 能够自动预配备用 GPU 或 CPU 节点。
Configure GKE node pool auto-creation to diversify machine families and prevent pending pods when regional accelerator capacity is constrained.