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