容量缓冲区可让您主动在集群中声明分层的有效或备用容量,从而帮助您缩短 Google Kubernetes Engine (GKE) 工作负载的 Pod 启动延迟时间。通过提前声明备用容量,您可以经济高效地更快启动工作负载。
本文档介绍了容量缓冲区的运作方式。如需了解如何启用和使用容量缓冲,请参阅配置容量缓冲。
何时使用容量缓冲
对于对启动延迟敏感且需要快速扩缩的应用,请使用容量缓冲区。当流量突然增加时,有效缓冲区可提供预先配置的容量,旨在实现低延迟伸缩。当流量持续增加时,与预先配置相比,备用缓冲区可以更经济实惠地提供 Pod 调度。
容量缓冲具有以下优势:
- 最大限度地缩短伸缩延迟时间:活跃缓冲区可为正在运行的虚拟机提供支持,有助于最大限度地缩短延迟时间。备用缓冲区可快速恢复,与新节点相比,可更快地提供容量。
- 经济高效的过度预配:容量缓冲区可帮助您维持固定大小的安全网。对于大规模工作负载,与其他过度预配方法(例如降低 HorizontalPodAutoscaler (HPA) 利用率目标值)相比,此方法通常更经济高效,因为随着集群规模的扩大,其他方法可能会线性增加闲置容量。
- 满足工作负载要求:您可以完全控制容量缓冲的大小。您可以选择纳入自定义 DaemonSet 或数据,并控制映像预加载和工作负载预启动,以满足您的需求。
我们建议为需要快速扩容的延迟敏感型工作负载(例如 AI 代理、AI 推理、销售活动期间的零售应用或玩家活动高峰期间的游戏服务器)预留容量缓冲区。
对于对启动延迟不敏感的工作负载(例如批处理作业),我们不建议使用容量缓冲区。对于这些工作负载,过度预配资源没有任何好处。
容量缓冲区的运作方式
通过使用 Kubernetes CapacityBuffer 自定义资源定义备用容量缓冲区,实现容量缓冲区。GKE 集群自动扩缩器会监控 CapacityBuffer 资源,并将其视为待处理需求,以帮助确保有可用备用容量。如果集群的容量不足以满足缓冲区中定义的资源请求,集群自动扩缩器会预配额外的节点。
当高优先级工作负载纵向扩容时,GKE 会立即在缓冲区中的可用容量上安排该工作负载。这种立即调度适用于缓冲区中预留的副本数或资源量,可避免与节点配置相关的典型延迟。当工作负载使用缓冲区单位时,集群自动扩缩器会预配一个新节点来重新填充缓冲区。
容量缓冲策略
您可以根据对延迟时间和费用的要求,使用不同的预配策略来配置容量缓冲区。
有效缓冲区
有效缓冲区可提供正在运行的虚拟机,以便在预留容量范围内以低延迟方式伸缩工作负载。由于节点已准备就绪,因此在扩缩事件期间,它们可为初始缓冲区消耗提供最低延迟。
对于需要以最快速度纵向扩缩的关键工作负载,我们建议采用此策略。
备用缓冲区
备用缓冲区提供已暂停的虚拟机。与主动策略相比,备用策略更具成本效益,但在虚拟机接受工作负载之前,恢复虚拟机需要短暂的延迟。
我们建议将此策略用于可容忍伸缩略有延迟的工作负载,以优化费用。
CapacityBuffer CRD
如需配置容量缓冲区,请创建 CapacityBuffer CustomResourceDefinition (CRD)。您可以配置容量缓冲区以满足不同的条件:
- 固定副本数:指定固定数量的缓冲 Pod。此配置是创建已知大小的缓冲区的最简单方法。
- 基于百分比:将缓冲区空间定义为现有可扩容对象(用于定义伸缩子资源,例如 Deployment、StatefulSet、ReplicaSet 或 Job)的百分比。缓冲区空间会随着参考工作负载的规模变化而动态调整。您无法为 Pod 模板定义基于百分比的缓冲区,因为它们没有 replicas 字段。
- 资源限制:定义缓冲区应预留的 CPU 和内存总量。控制器会根据所引用 Pod 模板的资源请求计算要创建的缓冲 Pod 数量。
如需了解详情,请参阅 CapacityBuffer CRD 参考文档。
要求和限制
容量缓冲有以下要求和限制:
- 容量缓冲区适用于运行 1.35.2-gke.1842000 版或更高版本的 GKE 集群(对于有效缓冲区),以及运行 1.35.2-gke.1842002 版或更高版本的 GKE 集群(对于备用缓冲区)。
- 容量缓冲区仅支持使用基于节点的结算模型的工作负载。容量缓冲区不支持使用基于 Pod 的结算模式的工作负载。
- 我们建议您在集群上启用节点自动预配功能。 节点自动预配功能可让集群自动扩缩器根据 CapacityBuffer 中的资源请求创建新的节点池。如果您不启用节点自动预配,集群自动扩缩器只会扩容现有节点池。
备用缓冲区的其他限制如下:
- 仅 Standard 集群支持这些功能。
- 不支持挂接了 GPU 或 TPU 的虚拟机。
- 不支持本地 SSD。
- 不支持机密 Google Kubernetes Engine 节点。
- 您应熟悉与 Compute Engine 暂停和恢复操作相关的限制,例如内存限制。
后续步骤
- 如需了解如何实现容量缓冲区,请参阅配置容量缓冲区。