基于利用率的 GKE 服务负载均衡器简介

本页面介绍了 Google Kubernetes Engine (GKE) 服务的基于利用率的负载均衡,该功能可评估后端 Pod 的资源利用率,并使用实际工作负载容量智能地重新平衡流量,从而提高应用可用性和灵活路由。

本页面适用于在 GKE 上管理服务并希望根据实时资源利用率优化流量分配的云架构师和网络专家。

在阅读本页面之前,请确保您熟悉以下内容:

概览

Cloud Load Balancing 基础架构会根据标准可达性指标(包括 HTTP、HTTPS、HTTP/2 和 gRPC)将流量路由到 GKE Service,这些指标用于确定 Pod 的健康状况和资格。默认情况下,它会考虑 Pod 可用性和可选定义的流量分配政策(例如 GCPTrafficDistributionPolicy),将流量转发到所有健康的后端 Pod。

现代应用会跟踪 CPU 使用情况,以便您了解费用、监控性能并有效管理容量。为了满足这一需求,负载均衡器使用实时资源利用率数据作为指标,从而确定每个后端 Pod 可以处理的最佳流量,以实现智能流量分配。

GKE 服务的基于利用率的负载均衡功能会评估资源利用率,以此作为指标来确定后端 Pod 处理应用流量的能力。然后,如果一个或多个 Pod 的利用率过高,它会将流量重新均衡到其他后端。

特性和优势

基于利用率的负载均衡具有以下优势:

  • 提高应用可用性:当后端承受压力时,优先将流量路由到资源利用率较低的 Pod,这有助于确保应用性能、防止运行缓慢和服务中断,并有助于确保为用户提供可靠的体验。

  • 提供灵活的路由:提供一组额外的指标,让您可以定义与业务用例精确契合的流量分配政策。

基于利用率的负载均衡的工作原理

基于利用率的 GKE 服务负载均衡功能可让流量管理流程更快速地响应资源负载,从而改进在 GKE 中运行的应用的流量管理方式。您的应用通过在不同机器上使用多个实例 (Pod) 在 GKE 中运行。它主要通过以下两种方式接收流量:

  • 从集群外部(南北向流量):集群从互联网或其他外部来源接收流量,这称为南北向流量。GKE 托管的负载均衡器(网关)会从集群外部引导此流量。

  • 从集群内部(东西向流量):您的集群会接收应用不同部分之间、GKE 集群内其他服务之间或多个集群之间的流量。这种内部流量称为东西向流量。

GKE 服务的基于利用率的负载均衡功能涉及一个持续的过程,其中 GKE 代理会收集 Pod 利用率指标,使 Cloud Load Balancing 基础架构能够智能地分配流量。以下步骤总结了 GKE 服务的基于利用率的负载均衡功能如何根据实时资源用量管理应用流量:

  1. 当您使用应用负载均衡器(网关)设置 GKE Service 时,GKE 会自动为每个可用区创建 NEG,并将应用的 Pod 分配给这些 NEG。最初,流量分配依赖于基本健康检查和默认设置。

  2. 您将 GKE 服务配置为使用资源利用率(例如 CPU)作为负载均衡的关键指标。

    除了默认的 CPU 利用率指标之外,您还可以从应用中公开自定义指标,以供负载均衡器使用。通过使用应用中的指标,您可以定义特定于工作负载的信号。例如,您可以使用 vLLM 工作负载中的 gpu_cache_usage_perc metric 来帮助负载均衡器将流量定向到具有更多可用资源的区域。如需了解如何为负载均衡器公开自定义指标,请参阅公开负载均衡器的自定义指标。

  3. 一个特殊的 GKE 代理会持续监控 Pod 资源使用情况(例如 CPU),并定期将这些数据发送到 Cloud Load Balancing 基础架构。如果 Pod 有多个容器,代理会计算它们的总利用率。

  4. Cloud Load Balancing 基础设施会分析实时利用率数据,以动态调整流量分配。它通过评估每个 Pod 组(每个可用区级 NEG)的平均资源利用率(例如 CPU 负载)以及网络延迟等其他因素,来确定要向每个 Pod 组发送多少流量。此过程会自动将流量从负载较高的 Pod 转移到负载较低的 Pod,从而确保在最近的区域内高效利用资源。

以下示例演示了基于利用率的负载均衡的工作原理。

示例:处理过度利用的 Pod

当您的 Service 在同一 Pod 中运行多个容器时,GKE 指标代理会单独报告每个容器的资源用量。然后,Cloud Load Balancing 基础架构会计算其利用率的加权平均值,以获取 Pod 的总容量。

基于利用率的 GKE 服务负载均衡。
图 1:在 GKE 代管式负载均衡器设置中,根据后端 CPU 利用率进行智能流量分配。

图 1 展示了 Cloud Load Balancing 如何使用来自 GKE 的实时 CPU 利用率指标来优化跨多个可用区部署的 Pod 之间的流量分配。客户端请求通过 GKE Gateway 路由到后端 Pod,这些 Pod 分组在三个可用区的 NEG 中。

  • 在可用区 1 中,Pod 报告的 CPU 使用率为 90%。负载均衡器会减少流向此 Pod 的流量,以防止过载。

  • 在可用区 2 中,Pod 的 CPU 利用率适中,为 60%,并继续接收流量。

  • 在可用区 3 中,Pod 报告的 CPU 使用率较低,为 40%,可能会接收更多流量。GKE 会持续向 Cloud Load Balancing 基础设施发送元数据和利用率指标,该基础设施会智能地调整流量路由,以维持应用性能和可用性。

假设您的服务配置为 CPU 利用率上限为 80%。如果可用区 1 中的 Pod 报告 CPU 利用率为 90%(超过阈值),则会发生以下情况:

  1. Cloud Load Balancing 基础架构会检测到这种过度利用。
  2. 然后,它会智能地重新平衡流量,并减少发送到可用区 1 中的 Pod 的流量。这种再均衡会持续进行,直到该可用区中 Pod 的平均 CPU 利用率回落到 80% 的利用率阈值以下。
  3. 当可用区 1 中的 Pod 报告 CPU 利用率较低(低于 80% 阈值)时,Cloud Load Balancing 基础架构会重新评估流量分配。然后,它会逐渐在支持该服务的所有 Pod 之间重新平衡流量,并继续根据利用率高效分配流量。

后续步骤