Coursera 笔记

Module 04 · The Kubernetes Ecosystem: OpenShift, Istio, etc.

IstioIstio 服务网格(Service Mesh)简介

Coursera ↗

服务网格与 Istio

什么是服务网格?

服务网格(Service Mesh)是一个专用层,旨在使服务到服务(service-to-service)的通信安全可靠。

  • 功能:
    • 流量管理(Traffic Management):控制服务之间的流量流向。
    • 安全性(Security):加密服务之间的流量。
    • 可观察性(Observability):观察服务行为,以便进行故障排除和应用程序优化。
  • 软件描述: 服务网格一词描述了一种软件,它创建了一个安全或网络域,并提供了一种实现上述能力的模式。

Istio 概述

Istio 是一个平台无关的服务网格,通常在 Kubernetes 上使用。

Istio 具备服务网格的定义特性,并展现出以下四个核心概念:

  1. 连接性(Connection): 使 Istio 能够智能地控制服务之间的流量,支持金丝雀部署(canary deployments)、A/B 测试等部署模型。
  2. 安全性(Security): 通过认证(authentication)、授权(authorization)和加密(encryption)来保护服务。
  3. 可强制执行性/控制力(Enforceability/Control): 通过在整个集群范围内强制执行策略来提供控制。
  4. 可观察性(Observability): 允许您观察网格中的流量流、追踪调用流和依赖关系,并查看延迟和错误等指标。

Istio 的能力与特性

Istio 提供了一系列强大的企业级功能:

  • 传输安全性:在集群中的服务之间提供 TLS 加密通信,并结合适当的认证和授权。
  • 负载均衡:为 HTTP, TCP, gRPC 和 WebSocket 流量等不同协议进行负载均衡。
  • 流量控制:支持称为路由规则(routing rules)的细粒度配置,通过持续重试、故障注入(fault injection)和自动故障转移(automatic failovers)来提供控制。
  • 策略执行:通过 API 支持访问控制、速率限制和配额(quotas)。
  • 自动化监控:自动提供监控、日志记录和追踪(tracking)入站和出站流量。
  • 可扩展性:Istio 具有可扩展性,能够处理各种部署需求。
  • 部署环境:Istio 运行在 Kubernetes 上,可以将集群中的应用程序添加到网格中,将网格扩展到额外的集群,或连接到在 Kubernetes 外部运行的虚拟机或其他端点。

Istio 与微服务架构

Istio 的两大组件

  1. 数据平面(Data Plane): 负责处理服务之间的通信。
  • Envoy 代理(Envoy Proxy): 所有网络流量都会被 Envoy 代理拦截或截获。Envoy 是服务网格使用的代理,根据配置实现多种功能。
  1. 控制平面(Control Plane): 获取期望的配置和它对服务的视图,并随着环境的变化动态地编程和更新代理服务器。

微服务架构的特点

微服务是一种云原生架构方法,其中单个应用程序包含许多松散耦合、可独立部署的较小组件或服务。它们通过定义良好的 API 相互通信。

微服务的优势

  • 更新简易:只需更新相关服务,而非整个应用程序。
  • 技术栈多样性:各团队可为组件使用不同的技术栈。
  • 独立伸缩:组件可以独立伸缩,而非伸缩整个应用。

微服务的挑战

  • 流量加密:需要加密流量以确保安全通信。
  • 部署复杂性:需要 金丝雀部署和 A/B 测试等方法,以便向部分用户推出新功能或比较不同版本。
  • 级联故障:微服务间的通信可能导致级联故障(cascading failures),若一个服务不可达或过慢。
    • 开发者需要重试(retries)和熔断(circuit breaking)来防止一个微服务中的错误蔓延到其他微服务。

Istio 如何解决微服务挑战

  • 流量迁移(Traffic Shifting):Istio 通过逐渐迁移流量来实现。
    • 示例:将 5% 的流量发送到新版本,然后逐步增加到 50%,最终到 100%。
  • 请求路由(Request Routing):允许您执行 A/B 测试,将特定版本的微服务定向到部分用户,而将原始版本发送给其余用户。
  • 安全性(Security):
    • 加密:Istio 通过加密微服务之间的流量来防御中间人攻击(man-in-the-middle attacks)。
    • 访问控制策略:简化服务访问控制策略的实施,确保服务只能与所需的服务通信(例如:UI 服务无法直接与 Inventory 服务通信)。

服务监控指标

Istio 提供服务通信指标,涵盖四个基本服务监控需求(Latency, Traffic, Errors, Saturation - L.T.E.S.):

  1. 延迟(Latency):请求处理所需的时间(Istio 提供请求持续时间指标)。
  2. 流量(Traffic):服务接收的请求量(Istio 提供请求计数指标)。
  3. 错误(Errors):请求失败的频率。
  4. 饱和度(Saturation):服务资源的使用程度。


总结

  • 服务网格提供流量管理、安全性和可观察性。
  • Istio 支持连接性、安全性、可强制执行性/控制力和可观察性这四个核心概念。
  • Istio 常用于微服务应用程序,解决了流量加密、A/B 测试和级联故障等挑战。
  • Istio 为基本服务监控需求提供了服务通信指标,包括延迟、流量、错误和饱和度。