Cloud Service Mesh GKE 服务网格概览

预览版客户支持此配置,但我们不建议 Cloud Service Mesh 新用户有关详情,请参阅 Cloud Service Mesh 概览

本文档适用于希望在 Google Kubernetes Engine 中部署 使用 Kubernetes Gateway API 的 Cloud Service Mesh 服务网格。

您可以使用 Kubernetes Gateway API,支持服务间通信和流量传输 服务管理、全球负载均衡和安全政策实施 应用场景。

Kubernetes API 和 Google Cloud API

您可以使用两个不同的 API 配置 Cloud Service Mesh 服务网格:

本文档和相关的设置指南提供了有关如何使用 Kubernetes Gateway API 来配置 Cloud Service Mesh 服务网格。

我们建议您使用 Kubernetes Gateway API 使用 Google Kubernetes Engine,我们建议您不要同时使用这两个 API 来配置路由 同一服务网格中

Service Route API 使用的资源与 Kubernetes Gateway API 中的资源同名,这让您在同时使用这两个 API 时能够更轻松地进行操作。Kubernetes 您配置的资源在功能上等同于 Google Cloud 由适用于 Cloud Service Mesh 的服务路由 API 表示的资源。

以下各部分介绍了 Cloud Service Mesh 与 Kubernetes Gateway API 集成。

Gateway API

Gateway API 是对 Kubernetes 中的服务网络进行建模的资源集合。Kubernetes 网关 API 是一个开源项目,专注于支持入站流量和负载均衡器 通过提供通用路由 API 来用例。通用的路由 API 有许多实现。添加了 Cloud Service Mesh 自定义资源定义 (CRD) 作为开源 Gateway API 的扩展。CRD 支持服务网格用例,并使用 Gateway API 中引入的通用路由 API。

Gateway API 是分层组织的,它具有一个您将向其附加路由的网关父资源及其关联的 GatewayClass。GKE 包含一个 TDMesh 资源,它是 Gateway 资源的对等资源。您可以将相同的 Route 类型附加到 TDMesh 资源。TDMesh 资源是您将向其附加服务网格的路由和政策的位置。

Gateway API、网关资源、网格资源和路由
Gateway API、网关资源、网格资源和路由(点击可放大)

舰队

舰队由一个或多个 GKE 集群组成,这些集群在逻辑上进行分组。舰队 让您可以管理各项功能,并在多个部门以一致的方式应用政策 集群。使用舰队时,您可以管理 Cloud Service Mesh 服务网格 跨多个集群进行部署

架构

Cloud Service Mesh 通过 集群编程数据平面来实现 。Cloud Service Mesh 本身是由 Google 管理的 不处理任何数据平面流量的控制平面作为工作负载的 Sidecar 运行的 Envoy 代理或无代理 gRPC 客户端会负责处理数据平面中的流量。Cloud Service Mesh 可配置 Envoy 代理和无代理 gRPC 客户端(通过 xDSv3 API)。

Cloud Service Mesh 提供代管式、全球可用的控制平面解决方案 比运行集群内控制器更可靠且更具可伸缩性。因为 它是一种全球性解决方案,Cloud Service Mesh 可以在 将工作负载分布在多个 GKE 集群中。在 如下图所示,Cloud Service Mesh 管理流向服务的流量 所有集群在单个舰队中,并使用 Gateway API 资源。

<ph type="x-smartling-placeholder"></ph> 使用 Gateway API 配置的 Cloud Service Mesh 多集群服务网格
使用 Gateway API 配置的 Cloud Service Mesh 多集群服务网格(点击可放大)

您需要将舰队中的一个集群指定为配置集群。配置集群是存储 Gateway API 资源的位置。云服务网格 仅监控配置集群中的资源,而忽略资源 其他集群中的其他集群如需详细了解配置集群,请参阅 GKE 文档中的配置集群设计

使用 GKE 多集群服务时,配置集群中的 Gateway API 资源可以引用舰队内任何集群中的 Kubernetes 服务。请参阅 多集群服务 来详细了解多集群服务发现。

资源

Cloud Service Mesh 支持在数据中使用 Envoy 代理和无代理 gRPC 整体平面。两个客户端均从 特定服务网格的 Cloud Service Mesh) TDMesh 资源的相应引导加载程序中的对应项目编号 配置。使用 Kubernetes Gateway API 的 Cloud Service Mesh 设置指南 使用 Envoy 和无代理 gRPC 提供演示数据平面配置。

TDMesh 资源

通过 TDMesh 资源 是 Cloud Service Mesh 自定义资源。它是对开源项目的扩展 用于支持 Cloud Service Mesh 的服务网格用例的网关 API。使用 TDMesh 资源时,您会在舰队中创建服务网格实例。附加到 TDMesh 资源的路由指定了服务网格中的服务到服务路由行为。

Route 项资源

其中一部分 网关 API 路由 资源可以附加到 TDMesh 资源,以指定服务等级路由 位于服务网格中Cloud Service Mesh 支持以下Route 资源:

  • HTTPRoute
  • TCPRoute
  • TDGRPCRouteCloud Service Mesh 自定义资源

例如,您可以创建 HTTPRoute 以指定将发送到主机 payments.svc.internal 的 HTTP 请求路由到 Kubernetes 服务 service-payments。将 HTTPRoute 资源附加到数据平面实例订阅的 TDMesh 资源时,系统会相应地路由网格中的工作负载发送的 HTTP 请求。

此版本通过新的路由类型 TDGRPCRoute 扩展了 Gateway API 中的通用 Route 资源。由于该新的路由类型会匹配原生 gRPC 原语(例如方法和服务定义),因此它能够在您路由 gRPC 请求时为您提供一流的体验。

<ph type="x-smartling-placeholder"></ph> 在 GKE 中使用 Gateway API 资源配置 Cloud Service Mesh
使用 GKE 中的 Gateway API 资源配置 Cloud Service Mesh(点击可放大)

限制

  • Cloud Service Mesh 为所有 服务网格中的 Kubernetes 服务您无法更改这些行为。
    • TCP 健康检查会在所有 Gateway API Route 资源引用的服务端口上进行配置。
    • 默认的 30 秒 超时 配置用于向服务的所有传入请求。
    • 会话亲和性 已停用。
  • 通过 Envoy 自动注入器 每个舰队仅支持一个网格。
  • Cloud Service Mesh 的安全功能无法使用 Gateway API。
  • 您只能使用 Gateway API 在 GKE 上配置 TDMeshRoute 资源。您不能使用 Google Cloud 控制台、gcloud CLI 或 REST API。
  • 所有集群都必须位于同一项目中。不支持跨位于多个项目的集群的服务网格。
  • 您无法使用 Google Cloud 控制台配置或查看 GKE 服务网格。
  • 不支持使用 Cloud Logging 和 Cloud Monitoring 实现控制平面可观测性。

后续步骤