GKE 中的负载均衡简介


本页面简要介绍 Google Kubernetes Engine (GKE) 如何创建和管理 Google Cloud 负载平衡器。如需详细了解 Google Cloud中提供的负载平衡器类型,请参阅负载平衡器类型 Google Cloud

本页面适用于为组织设计和架构网络的云架构师和网络专家。如需详细了解我们在 Google Cloud 内容中提及的常见角色和示例任务,请参阅常见的 GKE Enterprise 用户角色和任务

本指南假定您熟悉以下内容:

  • Google Cloud 负载均衡器的类型
  • 第 4 层(网络负载平衡器)和第 7 层(应用负载平衡器)负载平衡器之间的区别

GKE 如何创建负载平衡器

如需让用户能够从集群外部(外部用户)或专用网络内(内部用户)访问您的应用,您可以使用网关、Ingress 和 Service API 预配负载平衡器,以公开您的应用。或者,您也可以自行创建负载均衡器组件,由 GKE 管理将负载均衡器连接到集群中 Pod 的网络端点组 (NEG)。

网关

GKE 网关控制器是 Google 对用于 Cloud Load Balancing 的 Kubernetes Gateway API 的实现。Gateway API 是一个开源项目,旨在规范服务网格和入站控制器在 Kubernetes 中公开应用的方式。它旨在成为 Ingress 资源的更具表现力、更灵活且可扩展的后继者。

GKE Gateway Controller 用于配置第 7 层应用负载平衡器,以将 HTTP(S) 流量公开给在集群中运行的应用。

最佳实践

使用 Gateway API 实现负载均衡器。

入站流量

GKE Ingress 控制器是 Google 对 Ingress API 的实现。借助 Ingress API,您可以管理对集群中运行的服务的外部访问。当您在 GKE 中创建 Ingress 资源时,该控制器会自动配置第 7 层应用负载平衡器,以允许 HTTP 或 HTTP(S) 流量到达在集群中运行的应用。

对于需要高级流量管理、多协议支持或更好的多租户功能的新部署和应用,我们建议使用 GKE Gateway。不过,对于更简单的 HTTP/HTTPS 路由场景,GKE Ingress 是一个可行的选择,尤其是对于现有配置,迁移到 Gateway API 的好处可能还不如迁移所需的工作量。

LoadBalancer 服务

借助 Service API,您可以将在集群中作为 Pod 运行的应用公开给外部或内部流量。创建类型为 LoadBalancer 的服务时,GKE 会根据 Service 清单的参数自动创建第 4 层 (TCP/UDP) 直通式网络负载平衡器。

在直通网络负载平衡器中,当流量到达后端虚拟机时,原始源 IP 地址和目标 IP 地址、通信协议(例如 TCP 或 UDP)和端口号(如果协议使用端口号)保持不变。这意味着流量会直接传递到后端虚拟机或 Pod,并且负载均衡器不会终止连接。后端服务会处理连接终止,并确保流量从客户端流向服务顺畅无阻。

加权负载均衡

如果您配置了外部 LoadBalancer Service,并且 VPC 网络外部的客户端和 Google Cloud 虚拟机可以访问该服务,则可以启用加权负载均衡。加权负载均衡会根据每个 GKE 节点上的服务 Pod 数量分配流量,因此与 Pod 较少的节点相比,Pod 较多的节点会接收更大比例的流量。

独立 NEG

在 GKE 中管理负载均衡器的另一种方法是自行创建负载均衡器组件,并让 GKE 管理 NEG。这种类型的负载均衡器称为代理网络负载均衡器。NEG 是一种表示后端端点组(例如 pod)以进行负载均衡的方法。

这种类型的负载均衡器仅适用于 TCP 流量。代理网络负载平衡器会将 TCP 流量分配到您的 VPC 网络或其他云环境中的后端。流量在负载均衡层终止。然后,负载均衡器会通过与最近的可用后端建立新的 TCP 连接来转发流量。

什么是容器原生负载均衡?

容器原生负载均衡是指使用 GCE_VM_IP_PORT NEG 直接将流量均匀分配到各个 Pod(而非节点)的 IP 地址的做法。借助 GCE_VM_IP_PORT NEG,您可以使用 Compute Engine 虚拟机 (VM) 的主要内部 IP 地址或虚拟机配置的别名 IP 范围中的某个 IP 地址指定后端端点。

容器原生负载均衡适用于所有 GKE 托管的第 7 层负载平衡器,包括网关、Ingress 和独立 NEG。LoadBalancer 服务不使用容器原生负载均衡。不过,您可以通过启用加权负载均衡来实现类似的功能。

容器原生负载均衡具有多项优势,包括网络性能和健康检查得到改善,因为它直接定位 Pod。如需了解详情,请参阅容器原生负载均衡

摘要表

请使用下表来帮助您规划负载均衡配置。

选择负载均衡器类型

下表显示了为给定资源(网关、Ingress 或 LoadBalancer Service)创建的负载均衡器类型:

Kubernetes 资源 创建的负载均衡器的类型
应用负载均衡器 直通式网络负载均衡器
网关
Ingress
LoadBalancer Service

选择创建负载均衡器的方法

下表显示了 GKE 中用于创建所选负载均衡器的选项:

负载平衡器类型 创建所选负载均衡器的方法
网关 入站流量 LoadBalancer Service 独立 NEG
全球外部应用负载平衡器
传统外部应用负载平衡器
区域级外部应用负载平衡器
区域级内部应用负载平衡器
跨区域内部应用负载平衡器
代理网络负载平衡器
(所有类型)
直通式网络负载平衡器
(内部和外部)

后续步骤