4. 服务网格基础与Istio架构

服务网格(Service Mesh)是云原生微服务通信的基础设施层,它将服务间通信的复杂性从应用代码中剥离,交由独立的代理层处理。本章将深入剖析服务网格的核心模式——Sidecar,以及 Istio 作为主流服务网格实现的分层架构与核心组件。

4.1 Sidecar 模式:非侵入式代理

Sidecar 模式是服务网格的基石。它通过在每一个服务实例旁部署一个代理容器(Sidecar),接管所有进出该实例的网络流量。应用容器无需感知 Sidecar 的存在,也无需修改代码即可获得流量管理、安全、可观测性能力。

核心优势:
  • 解耦: 通信逻辑与业务逻辑完全分离。
  • 透明: 对应用容器零侵入,升级 Sidecar 无需重启业务。
  • 一致性: 所有服务实例获得统一的通信策略。
Sidecar 模式架构 应用容器 业务逻辑 Sidecar 代理 流量拦截 / 策略执行 Pod 边界 应用容器 业务逻辑 Sidecar 代理 流量拦截 / 策略执行 Pod 边界 加密 mTLS 流量 所有服务间通信必须经过 Sidecar 代理,实现流量控制与安全策略

4.2 数据平面与控制平面

Istio 将服务网格划分为两个逻辑平面,职责清晰,便于管理和扩展。

平面 职责 组件 关键特性
数据平面 处理服务间所有网络通信 Envoy 代理(Sidecar) 高性能、低延迟、透明代理
控制平面 配置下发、策略管理、证书签发 Istiod(Pilot + Citadel + Galley) 集中管控、动态更新、安全加固
关键理解: 数据平面负责“执行”,控制平面负责“决策”。这种分离使得策略变更无需重启任何业务 Pod,控制平面通过 xDS 协议将最新配置推送到所有 Envoy 代理。

4.3 Istio 核心组件详解

Istio 的控制平面由 Istiod 统一提供,它整合了早期版本中的 Pilot、Citadel、Galley 三个独立组件。数据平面则由注入到 Pod 中的 Envoy 代理 构成。

4.3.1 Istiod(控制平面核心)

  • Pilot(服务发现与流量管理): 监听 Kubernetes Service、Endpoint、VirtualService、DestinationRule 等资源,生成 Envoy 可理解的配置(Listener、Cluster、Route),并通过 xDS 协议下发。
  • Citadel(安全与证书管理): 自动为每个服务生成 SPIFFE 兼容的身份证书,管理 mTLS 通信的密钥对,支持证书轮换。
  • Galley(配置验证与分发): 负责验证 Istio 配置的合法性,并将配置转换为内部模型供 Pilot 使用。

4.3.2 Envoy 代理(数据平面核心)

  • 高性能 L4/L7 代理: 基于 C++ 编写,支持 HTTP/1.1、HTTP/2、gRPC、TCP 等协议。
  • 流量拦截: 通过 iptables 规则透明地劫持 Pod 内所有进出流量。
  • 策略执行: 实现熔断、重试、超时、限流、负载均衡等高级流量管理功能。
  • 遥测数据采集: 自动生成访问日志、指标(Metrics)和分布式追踪数据。
Istio 核心组件架构 控制平面:Istiod Pilot(服务发现 & 流量管理) Citadel(安全 & 证书管理) Galley(配置验证) 应用容器 业务代码 Envoy Sidecar 应用容器 业务代码 Envoy Sidecar xDS 配置下发 xDS 配置下发 mTLS 加密通信 Istiod 通过 xDS 协议动态配置所有 Envoy 代理,实现零停机策略更新

4.4 核心概念对比

概念 说明 类比
Sidecar 与业务容器同 Pod 部署的代理容器 每辆车的专属司机
数据平面 所有 Sidecar 代理的集合,处理实际流量 道路上的所有车辆
控制平面 管理数据平面的中央大脑 交通指挥中心
Istiod Istio 控制平面的统一组件 指挥中心的总调度台
Envoy 高性能 L4/L7 代理,Istio 默认 Sidecar 智能导航 + 行车记录仪
常见误区: 服务网格不等于 Istio。Istio 是服务网格的一种实现。Envoy 是数据平面代理,Istiod 是控制平面。不要将 Istiod 与 Istio 整体混淆。

4.5 本章小结

  • Sidecar 模式实现了非侵入式的服务通信治理,是服务网格的核心设计模式。
  • 数据平面负责高性能流量转发与策略执行,控制平面负责集中配置与安全管理。
  • Istio 的控制平面由 Istiod 统一提供,数据平面由 Envoy 代理构成。
  • 理解这两个平面和 Sidecar 模式,是后续搭建多集群服务网格集成流水线的基础。