此概览页面介绍了如何在 Google Distributed Cloud (GDC) 空气隔离环境中配置内部和外部负载平衡器,以实现区域和全局网络配置。
GDC 的负载均衡功能可确保在后端工作负载之间高效分配流量,从而提高应用可用性和性能。
本页面适用于平台管理员群组中的网络管理员,或应用运维者群组中的开发者,他们负责管理组织的网络流量。如需了解详情,请参阅 GDC 气隙环境文档的受众群体。
负载均衡架构
GDC 提供负载平衡器,使应用能够相互公开服务。负载平衡器会分配一个稳定的虚拟 IP (VIP) 地址,用于在后端工作负载集之间平衡流量。GDC 中的负载平衡器执行第 4 层 (L4) 负载均衡,这意味着它们会将一组配置的前端 TCP 或 UDP 端口映射到相应的后端端口。负载平衡器是在项目级配置的。
负载平衡器是针对以下工作负载类型配置的:
- 在虚拟机上运行的工作负载。
- Kubernetes 集群中的容器化工作负载。
您可以通过以下三种方式在 GDC 中配置负载平衡器:
- 使用 Networking Kubernetes 资源模型 (KRM) API。您可以使用此 API 创建全球级或可用区级负载平衡器。
- 使用 gdcloud CLI。 您可以使用此 API 创建全球级或可用区级负载平衡器。
- 直接从 Kubernetes 集群使用 Kubernetes 服务。此方法仅创建区域级负载平衡器。
负载均衡器组件
当您使用 KRM API 或 gdcloud CLI 配置负载均衡器时,您使用的是 L4 直通负载均衡器:
- L4 表示协议为 TCP 或 UDP。
- 直通是指工作负载与客户端之间没有代理。
负载均衡器包含以下可配置的组件:
转发规则:指定转发哪些流量以及转发到哪个后端服务。转发规则具有以下规范:
- 包含三个元组,分别是 CIDR、端口和协议,供客户端访问。
- 支持 TCP 和 UDP 协议。
- 提供内部和外部转发规则。客户端可以从 Virtual Private Cloud (VPC) 内部访问内部转发规则。客户端可以从 GDC 平台外部或内部访问外部转发规则,前提是工作负载已定义
EgressNAT
值。 - 转发规则连接到后端服务。您可以将多个转发规则指向同一后端服务。
后端服务:是负载均衡中心,可将转发规则、健康检查和后端关联在一起。后端服务会引用一个后端对象,该对象用于标识负载均衡器将流量转发到的工作负载。单个后端服务可以引用的后端存在以下限制:
- 每个可用区一个地区级后端资源。
- 每个集群一个集群后端资源。此功能无法与项目后端混用。
后端:一种地区对象,用于指定作为所创建后端服务后端的端点。后端资源必须限定为某个可用区。使用标签选择端点。将选择器的范围限定为项目或集群:
项目后端是指未指定
ClusterName
字段的后端。在这种情况下,指定的标签适用于特定可用区中特定 VPC 内的特定项目中的所有工作负载。标签应用于多个集群中的虚拟机和 pod 工作负载。当后端服务使用项目后端时,您无法在该后端服务中引用相应可用区的其他后端。集群后端是指指定了
ClusterName
字段的后端。在这种情况下,指定的标签适用于指定项目中的指定集群中的所有工作负载。在单个后端服务中,每个集群的每个可用区最多只能指定一个后端。
健康检查:指定探测,以确定后端中给定工作负载端点的健康状况。健康状况不佳的端点会从负载均衡器中移除,直到其再次恢复健康状态。健康检查仅适用于虚拟机工作负载。Pod 工作负载可以使用内置的 Kubernetes 探测机制来确定特定端点是否正常运行。
直接从 Kubernetes 用户集群使用 Kubernetes 服务时,您可以使用 Service
对象,而不是之前列出的组件。您只能以创建 Service
对象的集群中的工作负载为目标。
外部和内部负载均衡
GDC 应用可访问以下网络服务类型:
- 内部负载平衡器 (ILB):可让您向组织内的其他集群公开服务。
- 外部负载平衡器 (ELB):从可从外部工作负载路由的范围分配 VIP 地址,并向 GDC 组织外部(例如 GDC 实例内部或外部的其他组织)公开服务。为 ELB 使用会话亲和性,以确保来自客户端的请求始终路由到同一后端。
全球和可用区级负载平衡器
您可以创建全球级或可用区级负载平衡器。全球负载平衡器的范围涵盖整个 GDC 宇宙。每个 GDC 宇宙可以包含多个 GDC 可用区,这些可用区组织成相互关联并共享控制平面的区域。例如,包含两个区域(每个区域有三个地区)的宇宙可能如下所示:us-virginia1-a
、us-virginia1-b
、us-virginia1-c
和 eu-ams1-a
、eu-ams1-b
、eu-ams1-c
。
区域级负载平衡器的范围仅限于创建时指定的可用区。每个可用区都是独立的灾难域。一个可用区管理使用本地控制平面的基础架构、服务、API 和工具。
如需详细了解 GDC 世界中的全球资源和地区资源,请参阅多地区概览。
您可以使用以下方法创建全球级负载平衡器:
- 使用 Networking Kubernetes 资源模型 (KRM) API。使用 API 版本
networking.global.gdc.goog
创建全局资源。 - 使用 gdcloud CLI。
使用 gdcloud CLI 命令时,请使用
--global
标志指定全局范围。
您可以使用以下方法创建地区负载平衡器:
- 使用 Networking Kubernetes 资源模型 (KRM) API。使用 API 版本
networking.gdc.goog
创建区域资源。 - 使用 gdcloud CLI。
使用 gcloud CLI 命令时,请使用
--zone
标志指定要为哪些可用区创建负载平衡器。 - 直接从 Kubernetes 集群使用 Kubernetes 服务。
服务虚拟 IP 地址
ILB 会分配仅供组织内部使用的 VIP 地址。这些 VIP 地址无法从组织外部访问;因此,您只能使用它们向组织内的其他应用公开服务。同一实例中的组织之间的这些 IP 地址可能会重叠。
另一方面,ELB 会分配可从组织外部访问的外部 VIP 地址。因此,ELB VIP 地址在所有组织中必须是唯一的。通常,组织可使用的 ELB VIP 地址较少。
限制
不得为 Pod 工作负载配置
BackendService
资源和HealthCheck
资源。请注意,BackendService
规范中的HealthCheckName
是可选的,在配置包含 pod 的负载均衡器时必须省略。负载均衡器配置无法以涉及 Pod 和虚拟机的混合工作负载为目标。因此,不允许在单个
BackendService
资源中混合使用涉及 Pod 和虚拟机的后端。全局负载均衡器自定义资源(
ForwardingRuleExternal
、ForwardingRuleInternal
、BackendService
或HealthCheck
)的名称不得与这些区域负载均衡器自定义资源的名称相同。后续步骤