Istio on GKE

Istio on GKE 是 GKE 的插件,借助该插件,您只需执行一步即可快速创建一个集群,其中包含创建并运行 Istio 服务网格所需的所有组件。安装 Istio 控制层面组件后,系统会自动更新为最新版本,您无需担心如何升级到新版本。您还可以使用该插件在现有集群上安装 Istio。

Istio 是什么?

Istio 是一个开放式服务网格,提供了一种连接、管理和保护微服务的统一方式。它可帮助您管理服务之间的流量、执行访问权限政策和汇总遥测数据,而这一切都不需要更改微服务代码。

Istio 为您提供:

  • 对 HTTP、gRPC、WebSocket、MongoDB 和 TCP 流量进行自动负载平衡。
  • 借助丰富的路由规则、重试、故障转移和故障注入功能对流量行为进行精细控制。
  • 支持访问权限控制、速率限制和配额的可配置政策层和 API。
  • 自动指标、日志和跟踪记录,适用于集群中的所有流量(包括集群入站流量和出站流量)。
  • 利用高强度身份验证及授权机制,在集群中提供安全的服务间通信。

您可以使用 Kubernetes API 并通过 kubectl 或 Istio 命令行工具 istioctl(用于提供额外验证)来配置 Istio 访问控制和路由规则等。

您可以在我们的概览中找到关于 Istio 的更多信息,还可以阅读在 istio.io 上设置的完整开源文档。

Istio on GKE 是什么?

Istio on GKE 是一个在 GKE 集群中自动安装和升级 Istio 的工具。在升级 GKE 时,该插件将自动升级到支持 GKE 的最新 Istio 版本。这让您可以在 GKE 集群的生命周期内轻松管理 Istio 的安装和升级。

请务必注意,使用 Istio on GKE 时,Istio 在集群内部运行。在集群中运行的 Istio 组件没有服务等级协议 (SLA)。

我应该使用 Istio on GKE 吗?

虽然 Istio on GKE 管理安装和升级,但它使用的控制层面默认安装选项对配置选项有限制。由于这些限制和产品的 Beta 版状态,客户不应在生产环境中使用此插件。对于生产工作负载,Anthos Service Mesh 或开源 Istio 是更好的选择。

插件的限制包括:

  • 安装的 Istio 版本与 GKE 版本相关联,您将无法单独更新它们。

  • 控制层面的配置存在严格限制。在生产环境中使用 Istio on GKE 插件之前,您应该查看这些限制。

如果您需要使用较新 Istio 开源版本,或者想要更好地控制 Istio 控制层面配置(在某些生产用例中可能适用),我们建议您使用 Istio 的开源版本,而不是 Istio on GKE 插件。

如果您出于任何原因不再需要使用我们的自动安装功能,则可以卸载该插件。如需了解如何卸载,请参阅卸载 Istio on GKE

安装了哪些组件?

使用 Istio on GKE 创建或更新集群时,将安装以下核心 Istio 组件:

  • Pilot 组件,它负责发现服务以及配置 Envoy Sidecar 代理来管理服务网格的流量
  • Mixer 组件 Istio-Policy 和 Istio-Telemetry,这些组件实施使用政策并收集服务网格中的遥测数据。
  • Istio 入站网关,它会为来自集群外部的流量提供入站点。
  • (仅限 Istio 1.0 版)Istio 出站网关 - 它允许将 Istio 功能(如监控和路由规则)应用于退出网格的流量。1.1 版及更高版本默认不会安装 Istio 出站网关。
  • Citadel,针对 Istio 自动执行密钥和证书管理。
  • Galley,针对 Istio 提供配置管理服务。

安装还允许您将 Istio Sidecar 代理添加到服务工作负载,使它们能够与控制层面通信并加入 Istio 网格。

如需详细了解如何安装和卸载该插件以及安装选项,请参阅安装 Istio on GKE

Cloud Monitoring 支持

对于启用了 Google Kubernetes Engine Monitoring 的集群,系统会将 Istio Stackdriver 适配器以及上述核心组件一起安装。该适配器可以将您网格中的指标、日志记录和跟踪记录数据发送至 Cloud Logging、Cloud Monitoring 或 Cloud Trace,让您能够在 Google Cloud Console 中观察服务的行为。为项目和集群启用了特定的 Cloud Logging、Cloud Monitoring 或 Cloud Trace 功能后,默认情况下,系统将从您的网格发送上述数据。请注意,Istio on GKE 插件会自动在集群的节点池中为 Cloud MonitoringLoggingTrace 设置访问权限范围

Monitoring

如果您在 Google Cloud 项目中启用了 Cloud Monitoring API,您的 Istio 网格将自动向 Monitoring 发送与您的服务相关的指标(例如特定服务收到的字节数),这些指标将会显示在 Metrics Explorer 中。您可以使用这些指标创建自定义信息中心和提醒,以便监控服务在一段时间内的用量,并在服务数量接近请求的指定数量时接收提醒。您还可以使用过滤条件和聚合将这些指标与 Monitoring 的内置指标结合使用,以深入了解服务行为。

如需使用 Metrics Explorer 查看受监控资源的指标,请执行以下操作:

  1. 在 Google Cloud Console 中,转到 Monitoring 或使用下面的按钮:
    转到 Monitoring
  2. 在 Monitoring 导航窗格中,点击 Metrics Explorer
  3. 查找资源类型和指标文本框中输入受监控资源的名称。

如需查看 Istio 指标的完整列表,请参阅 Cloud Monitoring 文档

Logging

如果您在 Google Cloud 项目中启用了 Cloud Logging API,您的 Istio 网格会自动向 Logging 发送日志,而这些日志将显示在日志查看器中。请参阅 Cloud Logging 文档,详细了解日志数据的用途,例如将日志导出到 BigQuery

跟踪

您可以启用 Cloud Trace,以便 Istio 网格将跟踪记录数据自动发送到 Cloud Trace,而跟踪数据将显示在 Trace Viewer 中。请注意,要充分利用分布式跟踪功能来帮助查找性能瓶颈,您需要更改工作负载以检测跟踪标头。您可以在 Istio 分布式跟踪指南中了解如何执行此操作。

升级流程工作原理

Istio 生命周期在 GKE 升级过程中进行管理。GKE 中有以下两个升级过程:

  • 主节点升级:主节点升级过程会自动进行,它会更新主节点上的 Kubernetes 控制层面组件(API 服务器、调度器、控制器、管理器等)以及插件。Istio 控制层面组件升级是在此过程中进行管理的。
  • 节点升级:节点升级过程可以自动进行(选择启用;推荐)或手动进行,后者会更新工作器节点上的 Kubernetes 组件,以与主节点上的相同版本同步。Istio Sidecar 升级是在此过程中进行管理的。

Istio on GKE 会自动将控制层面升级到较新(不一定是最新)的稳定版本。系统会根据开源部署中在一段时间内观察到的稳定性和性能来选择版本。版本升级会在 istio-gke-announce 组中提前公布。通常,版本升级会在两周或更长时间内逐步部署到所有 GKE 版本,从最新版本开始。

控制层面版本已经过测试,与最后两个旧版数据层面(Sidecar 代理)版本兼容。升级 GKE 集群后,建议您通过重启 pod(启用自动注入)或手动重新注入适当的版本,尽快将 Sidecar 更新为当前的控制层面。

Istio on GKE 不允许用户控制控制层面版本。

修改控制层面设置

由于 Istio on GKE 可以控制安装和升级控制层面的方式,因此它不允许您修改安装中提供的大多数控制层面配置设置。您可以在已加标签的 Istio on GKE 版本的清单中查看默认安装选项(应用的清单取决于您选择的 mTLS 模式以及 Cloud Logging、Cloud Monitoring 或 Cloud Trace 设置)。例如,您可以在控制台的 storage/browser/gke-release/istio/release/1.0.3-gke.3/manifests/ 下找到版本 1.0.3-gke.3 的安装选项。除以下指定的设置之外,对这些选项的任何修改都将由 Kubernetes 插件管理器进行还原。每分钟还原一次不可修改的选项。

在使用插件时,您可以配置(对于生产环境安装,您配置)的设置:

  • 使用自动扩缩功能或手动设置副本数来横向扩缩控制层面组件。
  • 控制层面容器的资源请求。
  • 您需要在升级期间保持可用的部署的 Pod 中断预算(例如提供的 Istio 入站网关)。

您可以参阅配置控制层面,了解如何配置这些设置。

在每种情况下,当安装由插件升级时,都会保留您指定的设置。

后续步骤