本文档介绍了多集群 Gateway 在 Google Kubernetes Engine (GKE) 中的运作方式。多集群网关是一种强大的网络解决方案,可让您管理跨多个 GKE 集群部署的服务的流量。
本文档适用于为组织设计和架构网络的 Cloud Architect 和网络专家。如需详细了解我们在 Google Cloud 内容中提及的常见角色和示例任务,请参阅常见的 GKE Enterprise 用户角色和任务。
概览
多集群 Gateway 是使用 Kubernetes Gateway API 资源配置的。GKE Gateway 控制器会监控这些资源(Gateway、HTTPRoute 和 TLSRoute),并自动预配和维护所需的Google Cloud 负载均衡基础架构。此基础架构为舰队内多个 GKE 集群中部署的服务提供高级流量管理。多集群 Gateway 使用 Google Cloud的负载均衡基础设施为您的应用提供单一、统一的入口点。此方法具有以下优势:
- 简化管理
- 提高可靠性
- 支持高级流量管理功能
流量管理功能
多集群 Gateway 为您提供了跨多个集群管理流量的高级功能。您可以实施复杂的路由策略(例如分阶段发布和蓝绿策略),以安全地部署更改。如需进行精细控制,您可以使用基于标头的匹配来测试一小部分流量的变化,也可以按权重拆分流量,以在不同的集群后端之间逐步转移请求。
多集群 Gateway 还允许您镜像流量,从而将实时用户请求的副本发送到新服务,以便在不影响用户的情况下测试性能。为确保可靠性并防止过载,多集群网关支持基于运行状况的故障切换和基于容量的负载均衡,后者会根据服务的定义容量分配请求。
对于需要端到端加密且不在负载均衡器处终止 TLS 的 TLS 流量,多集群 Gateway 支持使用 TLSRoute 进行基于 SNI 的路由。
多集群 Gateway 的工作原理
参与多集群 Gateway 设置的所有 GKE 集群都必须注册到舰队。舰队提供集群的逻辑分组,可实现集群之间的一致管理和通信。舰队中的一个 GKE 集群被指定为配置集群。
配置集群充当多集群 Gateway 配置的集中控制点。您只能将所有多集群 Gateway API 资源(例如 Gateway、HTTPRoute 和 TLSRoute)部署到此指定集群。GKE Gateway 控制器会监控配置集群的 Kubernetes API 服务器,以查找这些资源。
如需选择配置集群,请考虑区域级集群或其他高可用性 GKE 集群。这有助于确保控制器可以持续协调对 Gateway API 资源的更新。
多集群 Gateway 控制器使用多集群 Service (MCS) 来发现和访问舰队内多个 GKE 集群中的 Kubernetes Service。MCS 是一项 GKE 功能,可实现舰队内不同 GKE 集群中运行的 Service 之间的服务发现和连接。
MCG 使用 MCS 来发现哪些集群中有哪些服务可用,以便将外部流量路由到这些服务。MCG 控制器使用 MCS API 资源将 Pod 分组到可寻址且跨多个集群的单个 Service 中。
根据您在 Gateway API 资源中定义的配置,GKE Gateway 控制器会提供外部或内部应用负载均衡器(对于 HTTPRoute)或代理网络负载均衡器(对于 TLSRoute)。此负载均衡器用作应用的前端,并将流量直接分配到整个舰队中运行状况良好的 Pod,无论这些 Pod 位于何处。
以下概要步骤介绍了部署多集群 Gateway 的过程:
定义 Gateway:在多集群 Gateway 设置中,您需要创建一个 Gateway 资源,用于在配置集群中定义流量的入口点。Gateway 资源指定 GatewayClass,它是特定类型负载均衡器(例如全球外部应用负载均衡器或区域级内部应用负载均衡器)的模板。在 GKE 中,以下 GatewayClass 会部署多集群网关:
gke-l7-global-external-managed-mc:预配全球外部应用负载均衡器。gke-l7-regional-external-managed-mc:预配区域级外部应用负载均衡器或区域级外部代理网络负载均衡器。gke-l7-cross-regional-internal-managed-mc:预配跨区域内部应用负载均衡器或跨区域内部代理网络负载均衡器。gke-l7-rilb-mc:预配区域级内部应用负载均衡器或区域级内部代理网络负载均衡器。gke-l7-gxlb-mc:预配传统应用负载均衡器。
Gateway 还通过指定要公开的网络监听器(端口和协议)来定义负载均衡器如何监听传入流量。如需详细了解 GKE 支持的 GatewayClass,请参阅多集群 Service。
将路由资源附加到 Gateway:路由资源定义了负载均衡器如何将传入流量路由到特定后端服务:
- HTTPRoute:定义负载均衡器如何根据主机名、路径、标头和查询参数路由 HTTP 和 HTTPS 流量。支持流量分配、请求重定向和流量镜像。
- TLSRoute:定义负载均衡器如何使用 TLS 直通(在
gke-l7-regional-external-managed-mc、gke-l7-rilb-mc和gke-l7-cross-regional-internal-managed-mcGatewayClass 上受支持)根据 SNI 主机名路由加密的 TLS 流量。载荷均衡器会将流量直接转发到后端 ServiceImport,而无需在网关处解密载荷。
创建负载均衡器:当您部署 Gateway 和 Route 资源时,GKE Gateway 控制器会解读这些 API 对象,并相应地动态配置必要的 Google Cloud 负载均衡基础架构。然后,负载均衡器会将流量定向到正确的 Pod,无论这些 Pod 位于哪个集群中。此过程提供了一种高效且可伸缩的流量路由方式。
流量
下图展示了多集群网关如何作为集中式负载均衡器,为在不同区域的两个 GKE 集群中运行的应用提供服务:
负载均衡器的行为是根据 HTTPRoute 或 TLSRoute 资源中定义的规则配置的。当用户流量到达预配的 Google Cloud 负载均衡器(由 Gateway 资源定义)的 IP 地址时,负载均衡器(由 Google 管理的代理)会路由流量。此代理(Google Front End 代理或区域级代理)会根据以下条件将流量定向到正确 GKE 集群中的相应后端服务端点:
- 健康检查
- 流量分配规则
- 容量
流量会直接流向所选集群中的最佳 Pod。
后续步骤
- 了解如何部署外部多集群 Gateway。
- 了解如何部署内部多集群 Gateway。
- 了解如何部署 TLS 直通网关。
- 了解如何启用多集群 Gateway。
- 阅读有关网关在 GKE 中的工作方式的概览。