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

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

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

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

概览

Cloud Load Balancing 基础架构会根据标准可访问性指标(包括 HTTP、HTTPS、HTTP/2 和 gRPC)将流量路由到 GKE 服务,这些指标用于确定 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 服务时,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

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

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

图 1 展示了 Cloud Load Balancing 如何使用来自 GKE 的实时 CPU 利用率指标来优化跨多个可用区部署的 Pod 的流量分配。客户端请求通过 GKE 网关路由到后端 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 之间重新平衡流量,并继续根据利用率高效分配流量。

后续步骤