使用 Gemini 在 GKE 上设计资源可获取性

本文档介绍了如何设计弹性 Google Kubernetes Engine (GKE) 集群和工作负载调度策略,以帮助您获取 GPU、TPU 和高性能 CPU 等资源。通过利用 Gemini 和 Google Cloud Compute Advisor(预览版),您可以 防止 Pod 处于待处理状态,并提高 AI 工作负载的可靠调度。

本文档适用于管理 GKE 基础架构并希望优化容量规划和调度的云架构师、平台管理员和平台运维人员。

GKE 上的资源可获取性概览

Kubernetes 调度依赖于声明的资源请求。在调度 GPU 或 TPU 等大规模加速器时,如果特定硬件不可用,严格的资源请求可能会导致集群无法扩容。 您可以使用以下功能优化 GKE 上的容量可用性:

  • 节点池自动创建 :动态、多系列节点池创建。
  • 工作负载级回退 :配置容忍和节点选择器以接受替代硬件。
  • 地理位置和区域调度 :GKE 多可用区和多区域功能。
  • 预留管理 :先使用预购容量,然后再请求按需资源。

GKE 上的资源可获取性最佳实践

本部分提供了在 GKE 上调度工作负载时提高容量可用性的建议。这些最佳实践涵盖了设计灵活的硬件要求、配置节点池自动创建以及利用地理分布来适应资源限制等策略。节点池自动创建功能 会根据 Pod 规范自动管理节点池。您无需预先定义节点池,只需在 Pod 清单中指定资源要求,然后让 GKE 动态创建节点即可。

您还可以使用 Compute Advisor 发现并实施以下最佳实践。如需了解详情,请参阅使用 Compute Advisor

硬件灵活性选项

为了优化容量可用性,您可以指示 GKE 避免将工作负载绑定到单个静态机器家族或加速器类型。以下示例展示了如何为不同的工作负载类配置灵活的节点池和 Pod 相似性规则。您选择的具体替代方案取决于应用的资源需求:

  • 通用 CPU 节点池:

    • 主要示例 :N2(基于 Intel 的通用型)。
    • 示例替代方案 :N2D (AMD EPYC)、C2 或 C2D(计算优化型)或 E2(成本优化型)。
    • 实现模式:使用节点相似性或 容忍配置 Pod 规范,以允许跨多个机器系列 标签进行调度,例如 cloud.google.com/machine-family 中的 ["n2", "n2d", "c2d"]。借助此配置,GKE 可以预配具有可用容量的任何池。
  • GPU 节点池:

    • 主要示例 :A2 系列(NVIDIA A100 GPU)。
    • 示例替代方案 :L4(通用 AI/机器学习)或 T4(推理)。
    • 实现模式 :为不同的 GPU 层配置单独的节点池或 ComputeClass。对于无需 A100 特定功能即可运行的工作负载,如果 A2 预配受到限制,则允许 Pod 回退到 L4 或 T4 池。
  • TPU 节点池:

    • 主要示例 :TPU Ironwood (TPU7x)。
    • 示例替代方案 :TPU v6 (Trillium) 或 TPU v5(v5e 或 v5p)。
    • 实现模式 :TPU 切片预配可能会受到很大限制。设计具有框架级灵活性的训练工作负载(例如,支持可变切片拓扑的 JAX 或 PyTorch 配置),以便在 TPU Ironwood (TPU7x) 容量不可用时部署在 v6 或 v5 切片上。

下表总结了不同类型工作负载的主要选择和硬件替代方案:

工作负载类型 主要选择示例 示例替代方案 架构注意事项
系统或核心工作负载 N2 N2D、C2D、E2 跨越 Intel 和 AMD 硬件池,用于节点池自动创建。
GPU 推理和处理 A2 (A100) L4、T4 灵活地定位到成本较低或可用性较高的 GPU 节点池。
TPU 模型训练 TPU Ironwood (TPU7x) TPU v6、TPU v5(v5e 或 v5p) 利用灵活的拓扑进行基于切片的调度。

实现节点池自动创建和 ComputeClass

为了优化容量可用性,请将节点池自动创建与 ComputeClasses结合使用。以下列表包含最佳实践:

  • 定义 ComputeClass :创建 ComputeClass 资源,以指定机器系列、GPU 类型或预配模型的优先级列表。 GKE 会尝试使用类中可用的最高优先级配置来预配节点。优先级回退列表可显著帮助您获取工作负载所需的资源。例如,为了防止 GKE 在首选专用加速器不可用时回退到通用机器,请将 whenUnsatisfiable: DoNotScaleUp 设置添加到 ComputeClass 配置中。如需了解详情,请参阅 使用自定义 ComputeClass 控制自动扩缩的节点属性

  • 在 Pod 规范中引用 ComputeClass :在工作负载 Pod 规范中,使用 cloud.google.com/compute-class 标签来定位自定义 ComputeClass,而不是特定的机器家族或 GPU 类型。如需了解详情,请参阅在工作负载中请求 ComputeClass

  • 定义多个容忍:如果您不使用 ComputeClass,请在 Pod 规范中使用节点 相似性规则,以允许一系列机器 系列(例如 cloud.google.com/machine-family 中的 ["n2", "n2d"])。 如需了解详情,请参阅配置节点池自动创建

GKE 上的地理位置和多区域灵活性

为了提高容量可用性,请部署跨多个可用区的 GKE 集群,或运行多集群架构:

  • 多可用区集群 :确保节点池配置为在区域中的所有可用可用区内自动扩缩。

  • 多区域集群联合 :对于大型异步作业(例如离线批处理推理或分布式训练),请部署多集群编排器(例如 Kueue 或 Cluster Director),以全局排队工作负载并将其分派到具有可用容量的区域。

  • 在 Spot 虚拟机上运行的 Pod :通过添加容忍并指示 GKE 在不同可用区中分配过剩容量,在 Spot 虚拟机上运行可中断的工作负载。

GKE 可获取性的其他最佳实践

除了硬件多样化之外,还可以采用以下 GKE 最佳实践来优化集群伸缩缩成功率:

  • 实现 Pod 超额预配(容量缓冲区) :部署低优先级的“暂停”Pod,以提前预留节点容量。当提交高优先级的 AI 工作负载且区域容量受到限制时,Kubernetes 会立即抢占暂停 Pod,从而允许容器启动,而无需等待新节点预配。如需了解详情,请参阅 容量缓冲区简介
  • 使用灵活启动(带已排队的预配) :对于大型批处理和 AI 模型训练作业,请使用灵活启动(带已排队的预配),该功能与 Kueue 和动态工作负载调度器集成。 灵活启动(带已排队的预配)提供全有或全无的原子节点分配,可防止部分集群扩容失败。如需了解详情,请参阅通过灵活启动(带已排队的预配)运行大规模工作负载
  • 启用映像流式传输和容器映像预加载 :对于大型 AI 容器映像(例如超过 10 GB 的 PyTorch 或 TensorFlow 映像),请启用 GKE 映像流式传输或使用辅助启动磁盘进行映像预加载。此配置可缩短节点预热时间,从而让新预配的节点在几秒钟内开始运行工作负载。 如需了解详情,请参阅使用映像流式传输拉取容器映像使用辅助启动磁盘预加载数据或容器映像
  • 将集群自动扩缩器的位置政策设置为 ANY: 使用 ANY 位置政策配置节点池 (尤其是 Spot 虚拟机或灵活启动)。此设置指示集群自动扩缩器在所有指定可用区中搜索请求的容量。集群自动扩缩器会优先查找容量,而不是平衡节点数。如需了解详情,请参阅 集群自动扩缩器概览
  • 通过 GPU 共享优化加速器利用率 :对于不需要专用 GPU 的工作负载,请使用 GPU 分时、多实例 GPU (MIG) 或 NVIDIA MPS,以允许多个容器共享单个加速器。此方法可优化节点池的有效容量。 如需了解详情,请参阅 GKE 中的 GPU 共享策略简介

使用 Compute Advisor

Compute Advisor 是 Google Cloud 控制台中由 Gemini 提供支持的 AI 驱动型界面,可帮助您为 GKE 设计弹性架构。Compute Advisor 提供近乎实时的灵活启动虚拟机和 Spot 虚拟机可用性指南,同时在部署前验证您的组织政策和资源配额。Compute Advisor 不会为需要按需资源的工作负载提供可用性指南。

如需在 Google Cloud 控制台中访问 Gemini,请完成以下 步骤:

  1. 在 Google Cloud 控制台中,前往概览页面。

    转到“概览”页面

  2. 使用 Compute Advisor 设计基础架构 部分中,提交提示。Gemini 开始生成回答。

  3. 如需生成架构建议,请在 Compute Advisor 中运行以下示例提示之一。当您点击 Run prompt in Compute Advisor 按钮时, Google Cloud 控制台可能需要超过 15 秒才能加载:

    • 通用加速器策略

      用例: 在设计集群配置时,使用此提示分析区域容量信号并接收有关机器类型、可用区和回退调度策略的建议。

      Configure a GKE cluster to improve chances of obtaining scarce GPU or TPU capacity.
      

      在 Compute Advisor 中运行提示

    • 地理位置灵活性和回退

      用例: 在设计多集群架构或全局作业排队系统(例如使用 Kueue)时,使用此提示根据资源可用性在不同区域之间转移工作负载执行。

      Configure multi-region fallbacks and geographic scheduling on GKE to increase GPU availability.
      

      在 Compute Advisor 中运行提示

    • 优先级预留使用

      用例: 使用此提示生成 Pod 相似性和自动扩缩规则的 YAML 配置模式,这些规则优先考虑预留容量。

      Configure GKE autoscaling rules and Pod specs to prioritize consuming active reservations before scaling into on-demand pools.
      

      在 Compute Advisor 中运行提示

    • 用于回退优先级排序的 ComputeClass

      用例: 使用此提示生成 ComputeClass CustomResourceDefinition 的 YAML 清单,该清单优先考虑高性能 GPU,但包含较低层的回退以确保工作负载调度。

      Define a ComputeClass manifest for GKE to prioritize A2 GPU nodes with automatic fallbacks to L4 or T4 GPUs.
      

      在 Compute Advisor 中运行提示

    • 用于多样化的节点池自动创建

      用例: 使用此提示为 GKE 集群自动扩缩器资源限制和 Pod 相似性规则编写 YAML 清单,以使 NAP 能够自动预配替代 GPU 或 CPU 节点。

      Configure GKE node pool auto-creation to diversify machine families and prevent pending pods when regional accelerator capacity is constrained.
      

      在 Compute Advisor 中运行提示

后续步骤