Cloud Service Mesh 概览
本文档适用于希望了解以下事项的网络管理员和服务所有者: 熟悉 Cloud Service Mesh 及其功能。这是 适用于使用负载均衡 API 的配置的旧文档。
Cloud Service Mesh 是用于应用网络的代管式控制平面。 借助 Cloud Service Mesh,您可以通过 高级应用网络功能,例如流量管理和 可观测性。
随着部署中服务和微服务数量的增加,您通常开始遇到常见的应用网络挑战,例如:
- 如何让我的服务具有弹性?
- 如何获取服务流量以及服务如何相互通信?
- 当我的服务相互通信时,我如何理解发生了什么?
- 如何在不中断的情况下更新我的服务?
- 如何管理使部署成为可能的基础架构?
Cloud Service Mesh 可帮助您以现代化的 基于服务的部署Cloud Service Mesh 依赖于 Google Cloud 代管式服务 而无需管理自己的基础架构。您专注于交付可解决业务问题的应用代码,同时让 Cloud Service Mesh 管理应用网络的复杂性。
Cloud Service Mesh
解决应用网络挑战的一种常见模式是使用服务网格。Cloud Service Mesh 支持 部署模式。
在典型的服务网格中,有以下情况:
- 您会将服务部署到 Kubernetes 集群中。
- 每个服务 Pod 都有一个专用代理(通常是 Envoy)作为 Sidecar 代理运行。
- 每个 Sidecar 代理都会连接到集群中安装的网络基础架构(一个控制层面)。控制层面告知 Sidecar 代理服务网格中的服务、端点和政策。
- 当 Pod 发送或接收请求时,请求会转到 Pod 的 Sidecar 代理。例如,Sidecar 代理会将请求发送至其预期的目的地,通过这样的方式处理该请求。
在本文档和其他 Cloud Service Mesh 文档的图表中,
粉色边图标表示代理。控制平面连接到各代理,并提供代理处理请求所需的信息。两个框之间的箭头指示的是流量的方向。例如,Service A
中的应用代码发送请求。该代理对请求进行处理,并将其转发给 Service B
。
此模型使您可以将网络逻辑移出应用代码。您可以专注于交付业务价值,同时让您的基础架构负责处理应用网络。
Cloud Service Mesh 的不同之处
Cloud Service Mesh 与该模型类似, 方法。这一切都始于 Cloud Service Mesh 是 Google Cloud 代管式服务。您不需要安装它,它不会在您的集群中运行,您也不需要执行任何维护。
在下图中,Cloud Service Mesh 是控制平面。此 Kubernetes 集群中有四项服务,每项服务都连接到 Cloud Service Mesh。Cloud Service Mesh 提供
则代理需要路由请求。例如,属于 Service A
的一个 Pod 中的应用代码发送请求。与此 Pod 一起运行的 Sidecar 代理会处理该请求,并将其路由到 Service B
中的 Pod。
服务网格进阶
与典型服务网格相比,Cloud Service Mesh 支持的部署类型更多。
多集群 Kubernetes
借助 Cloud Service Mesh,您可以获得应用网络,
Kubernetes 集群在下图中,Cloud Service Mesh 为 us-central1
和 europe-west1
中的 Kubernetes 集群提供了控制平面。请求可以在 us-central1
中的三项服务、europe-west1
中的两项服务以及两个集群中的服务之间路由。
您的服务网格可以跨多个 Google Cloud 区域中的多个 Kubernetes 集群进行扩展。一个集群中的服务可以与另一个集群中的服务进行通信。您的服务甚至可以包含多个集群内的 Pod。
使用 Cloud Service Mesh 的基于邻近度的全球负载均衡功能,发送到 Service B
的请求将转到可处理请求的最近 Pod。您还将获得无缝的故障切换;如果某个 Pod 处于关闭状态,即使该 Pod 位于另一个 Kubernetes 集群中,该请求也会自动故障切换到可以为该请求提供服务的另一个 Pod。
虚拟机
Kubernetes 越来越受欢迎,但许多工作负载都部署到虚拟机实例中。Cloud Service Mesh 也能够解决这些工作负载的应用网络问题;基于虚拟机的工作负载可与基于 Kubernetes 的工作负载进行互操作。
在下图中,流量通过外部应用负载均衡器进入您的部署。流量会被路由到 asia-southeast1
内 Kubernetes 集群中的 Service A
以及 europe-west1
内虚拟机上的 Service D
。
Google 提供了一种无缝机制,支持使用 Cloud Service Mesh 设置基于虚拟机的工作负载。您只需要向 Compute Engine 虚拟机实例模板添加标志,Google 会处理基础架构的设置。此设置包括安装和配置用于提供应用网络功能的代理。
无代理 gRPC
gRPC 是一种功能丰富的开源 RPC 框架,可用于编写高性能微服务。借助 Cloud Service Mesh,您可以为 gRPC 应用实现应用网络功能(例如服务发现、负载均衡和流量管理)。如需了解详情,请参阅 Cloud Service Mesh 和 gRPC - 适用于服务网格的无代理服务。
在下图中,gRPC 应用将流量路由到一个区域的 Kubernetes 集群中的服务,以及多个不同区域的虚拟机上运行的服务。其中两种服务包括 Sidecar 代理,其他服务则为无代理。
Cloud Service Mesh 支持无代理 gRPC 服务。这些服务使用的是支持 xDS API 的最新版开源 gRPC 库。您的 gRPC 应用可以连接到 Cloud Service Mesh 通过使用与 Envoy 相同的 xDS API。
连接应用后,gRPC 库将负责处理 例如服务发现、负载均衡 和流量管理这些函数本身在 gRPC 中发生,因此服务 代理不是必需的,因此称为“无代理 gRPC” 应用。
入站流量和网关
在许多使用情形中,您需要[处理并非由 Cloud Service Mesh 配置的客户端发出的流量]。例如,您可能需要将公共互联网流量通过入站方式传输到您的微服务。您可能还需要将负载平衡器配置为反向代理,使其先处理来自客户端的流量,然后再将流量发送到目标。
在下图中,外部应用负载均衡器为外部客户端启用入站流量,并将流量路由到一个 Kubernetes 集群中的服务。内部应用负载均衡器将内部流量路由到虚拟机上运行的服务。
Cloud Service Mesh 与 Cloud Load Balancing 搭配使用 代管式入站流量体验您可以设置外部或内部负载平衡器,然后配置该负载平衡器,以将流量发送到您的微服务。在上图中,公共互联网客户端通过外部应用负载均衡器访问您的服务。客户端(例如位于您的 Virtual Private Cloud [VPC] 网络中的微服务)使用内部应用负载均衡器来访问您的服务。
在某些使用情形下,您可能需要设置 Cloud Service Mesh 以配置网关。网关本质上就是一个反向代理(通常是在一个或多个虚拟机上运行的 Envoy),用于监听入站请求、对其进行处理并将它们发送到目标位置。这个目标位置可以位于任何 Google Cloud 区域或 Google Kubernetes Engine (GKE) 集群中。您甚至可以使用混合连接,访问位于 Google Cloud 外部但 Google Cloud 可以访问的目标。 如需详细了解何时使用 请参阅网格的入站流量。
在下图中,europe-west1
区域中的一个虚拟机运行一个代理,该代理充当三个未运行代理的服务的网关。来自外部应用负载均衡器和内部应用负载均衡器的流量会路由到这个网关,然后再路由到三项服务。
多个环境
无论是在 Google Cloud、本地环境、其他云中,还是在囊括所有这些环境的混合环境中,您的基本应用网络挑战都保持不变。如何将流量传输到这些服务?这些服务如何彼此通信?
在下图中,Cloud Service Mesh 从服务路由流量
另一个公有云中运行的 Service G
连接到 Service E
和 Service F
,两者都在本地数据中心内运行。
Service A
、Service B
和 Service C
使用 Envoy 作为 Sidecar 代理,而 Service D
是无代理 gRPC 服务。
使用 Cloud Service Mesh 时,您可以将请求发送到 Google Cloud这允许您使用 Cloud Interconnect 或 Cloud VPN,以私密方式将流量从 Google Cloud 内部服务路由到其他环境中的服务或网关。
设置 Cloud Service Mesh
Cloud Service Mesh 的设置包括两个步骤。完成设置过程后,您的基础架构将处理应用网络,Cloud Service Mesh 会根据部署的更改将所有内容保持最新。
部署应用
首先,将您的应用代码部署到容器或虚拟机。Google 提供 可让您添加应用网络基础架构的机制 (通常是 Envoy 代理)连接到您的虚拟机实例和 Pod。此基础架构的设置目的是与 Cloud Service Mesh 通信并了解您的服务。
配置 Cloud Service Mesh
接下来,您要配置全局服务,并定义应该如何处理流量。如需配置 Cloud Service Mesh,您可以使用 Google Cloud 控制台( 部分功能和配置)、Google Cloud CLI、Traffic Director API 或其他 例如 Terraform
完成这些步骤后,Cloud Service Mesh 即可配置您的 应用网络基础架构
基础架构处理应用网络
当应用向 my-service
发送请求时,您的应用网络
基础架构(例如 Envoy 边车代理)处理请求
根据从 Cloud Service Mesh 收到的信息。这使得 my-service
的请求可以无缝路由到能够接收请求的应用实例。
监控和持续更新
Cloud Service Mesh 会监控构成 服务。此监控使 Cloud Service Mesh 能发现服务运行状况良好或者服务容量已发生变化(例如,在创建了新的 Kubernetes Pod 时)。根据这些信息,Cloud Service Mesh 持续更新您的应用网络基础架构。
特性
Cloud Service Mesh 的功能向您的微服务提供应用网络功能。本部分讨论了一些主要内容。
全代管式控制层面、健康检查和负载均衡
您希望做的是将时间花在交付业务价值上,而不是用在管理基础架构上。Cloud Service Mesh 是一种全代管式解决方案, 因此您不必安装、配置或更新基础设施您可以受益于 Google 用来执行健康检查和全局负载均衡的相同基础架构。
基于开源产品构建
Cloud 服务网格使用 Envoy 和 Istio 等流行开源项目使用的控制层面 (xDS API)。如需查看支持的 API 版本,请参阅 xDS 控制层面 API。
为应用网络提供支持的基础架构 功能 - Envoy 或 gRPC 还是开源的,所以您无需担心 受限于受限于专有基础架构
扩缩
从一次性应用网络解决方案到包含数千项服务的大规模服务网格部署,Cloud Service Mesh 可满足您的伸缩要求。
服务发现以及跟踪您的端点和后端
当应用向 my-service
发送请求时,您的基础架构会无缝地处理请求并将其发送到正确的目标位置。您的
并不需要了解
IP 地址、协议或其他网络复杂性。
全局负载均衡和故障切换
Cloud Service Mesh 使用 Google 的全局负载均衡和健康检查,根据客户端和后端位置、后端邻近情况、运行状况和容量优化流量平衡。通过自动将流量故障切换到运行状况良好且具有容量的后端,您就可以提高服务可用性。您可以自定义负载均衡,以分配流量来正确支持您的业务需求。
流量管理
高级流量管理,包括路由和请求操作(基于 主机名、路径、标头、Cookie 等),您可以确定 流量在服务之间的传输对于 Canary 部署,您还可以应用重试、重定向和基于权重的流量拆分等操作。借助故障注入、流量镜像和离群值检测等高级模式,您就可以实现提高弹性的 DevOps 使用场景。
可观测性
您的应用网络基础架构会收集遥测信息,例如 作为指标、日志和跟踪记录,可以在 Google Cloud 可观测性。收集好信息后,您可以获取数据洞见并创建提醒,以便在出现问题时获得通知。
VPC Service Controls
您可以使用 VPC Service Controls 为应用的资源和服务提供额外的安全保障。您可以将项目添加到服务边界,从而防止资源和服务(如 Cloud Service Mesh)受到源自边界外部的请求的影响。如需详细了解 VPC Service Controls,请参阅 VPC Service Controls 概览。
如需详细了解如何将 Cloud Service Mesh 与 VPC Service Controls 搭配使用,请参阅支持的产品页面。
后续步骤
这是一份主要适用于负载均衡 API 的旧文档。 我们强烈建议您不要使用 负载均衡 API
如需部署 Cloud Service Mesh,请执行以下操作:
- 对于具有虚拟机的 Compute Engine,请使用服务路由 API。
- 对于使用 pod 的 Google Kubernetes Engine,请使用 Gateway API。
如需查找无代理 gRPC 服务的使用场景和架构模式,请参阅无代理 gRPC 服务概览。
如需了解如何通过流量管理来控制流量的处理方式,请参阅高级流量管理概览。
了解 Cloud Service Mesh 如何支持范围超出 请参阅以下文档: