2. Istio架构深度解析:控制平面与数据平面的职责与交互

Istio 服务网格的核心架构遵循经典的控制平面/数据平面分离模式。理解这两个平面的职责划分以及它们之间的接口调用机制,是进行网格拓扑优化和性能调优的基础。本章将深入剖析控制平面各组件(Pilot、Mixer、Citadel、Galley)与数据平面(Envoy 代理)的具体功能及交互流程。

2.1 架构总览:控制平面与数据平面

数据平面由一组与每个服务实例共同部署的 Envoy 代理组成,负责处理所有进出服务的流量。控制平面则负责管理和配置这些代理,下发路由规则、安全策略和遥测配置。

Istio 控制平面与数据平面架构 控制平面 (Control Plane) Pilot 服务发现 & 路由下发 Mixer 遥测 & 策略检查 Citadel 证书签发 & 身份管理 Galley 配置验证 & 分发 数据平面 (Data Plane) Envoy Proxy (Sidecar) 服务 A 流量拦截 / 转发 Envoy Proxy (Sidecar) 服务 B 流量拦截 / 转发
关键理解:控制平面不直接参与业务流量转发,它只负责向数据平面下发配置指令。Envoy 代理根据这些指令独立执行流量管理、安全认证和遥测数据采集,这种分离设计保证了数据平面的高性能和低延迟。

2.2 控制平面核心组件职责

控制平面由四个主要组件构成,每个组件承担特定的职责,共同协作完成网格的统一管理。

组件 核心职责 关键能力
Pilot 服务发现与流量管理 从平台(Kubernetes/Consul)获取服务注册信息;将用户定义的路由规则(VirtualService、DestinationRule)转换为 Envoy 可理解的 xDS 协议配置;下发至所有 Sidecar 代理。
Mixer 遥测采集与策略执行 接收 Envoy 上报的调用属性;执行访问控制策略(RBAC、配额);将日志和指标数据发送到后端系统(Prometheus、Grafana、Stackdriver)。
Citadel 安全证书管理 为每个服务实例签发 SPIFFE 兼容的 X.509 证书;管理密钥和证书轮换;提供服务间 mTLS 通信的身份基础。
Galley 配置验证与分发 作为控制平面的配置入口,验证用户提交的 Istio CRD(Custom Resource Definitions)的合法性;将验证后的配置分发给 Pilot 和 Mixer。

2.3 数据平面:Envoy 代理的职责

Envoy 代理是数据平面的唯一组件,以 Sidecar 模式与每个服务实例部署在一起。它负责处理所有进出该实例的流量,并执行控制平面下发的指令。

  • 流量拦截与转发:通过 iptables 规则透明地拦截所有入站和出站流量,并根据路由规则进行转发。
  • 负载均衡:支持多种负载均衡算法(轮询、最少连接、一致性哈希等),将流量分发到后端实例。
  • 熔断与重试:实现熔断器模式,对故障实例进行隔离;自动重试失败的请求。
  • mTLS 通信:与 Citadel 交互获取证书,自动为服务间通信启用双向 TLS 加密。
  • 遥测数据上报:将请求的延迟、流量大小、状态码等属性上报给 Mixer 或直接发送到后端。

2.4 控制平面与数据平面的交互流程

控制平面与数据平面之间的交互主要通过 xDS(Discovery Service)协议和 gRPC 流实现。Envoy 代理主动向控制平面发起长连接,订阅所需的配置更新。

控制平面与数据平面交互流程 用户/运维 Galley Pilot Envoy 1. 提交 CRD 2. 验证后分发 3. xDS 推送 Mixer Citadel 4. 上报遥测属性 5. 请求证书 交互说明 • 步骤 1-3:配置下发路径。用户通过 CRD 定义路由/安全策略,Galley 验证后交给 Pilot,Pilot 通过 xDS 协议推送给 Envoy。 • 步骤 4-5:数据上报路径。Envoy 在处理请求时,将遥测属性上报给 Mixer,并从 Citadel 获取 mTLS 证书。 • 所有交互均基于 gRPC 长连接,Envoy 主动订阅,控制平面被动推送。

2.5 关键接口:xDS 协议详解

xDS 是 Envoy 与控制平面之间的核心通信协议,它定义了一组发现服务接口,用于动态获取配置。Pilot 是 xDS 协议的主要实现者。

接口名称 全称 功能描述
LDS Listener Discovery Service 下发监听器配置,定义 Envoy 在哪些端口监听流量以及如何处理入站连接。
RDS Route Discovery Service 下发路由配置,定义请求如何根据 Host、Path 等条件匹配到具体的集群。
CDS Cluster Discovery Service 下发集群配置,定义后端服务实例的集合以及负载均衡策略。
EDS Endpoint Discovery Service 下发端点配置,动态更新集群中的具体实例 IP 和端口。
SDS Secret Discovery Service 下发证书和密钥配置,用于 mTLS 通信的身份认证。
优化关注点:在大型网格中,xDS 推送的效率和稳定性直接影响网格的响应速度。Envoy 与 Pilot 之间的 gRPC 流数量、配置更新的频率、以及 Pilot 的缓存策略,都是后续优化章节的重点。

2.6 组件交互总结

下表总结了各组件之间的主要交互关系,帮助理解控制平面内部以及控制平面与数据平面之间的协作方式。

源组件 目标组件 交互内容 协议/方式
用户 Galley 提交 Istio CRD 配置 Kubernetes API
Galley Pilot / Mixer 分发验证后的配置 gRPC 流
Pilot Envoy 下发 xDS 配置(LDS/RDS/CDS/EDS/SDS) gRPC 流
Envoy Mixer 上报请求属性(Check/Report) gRPC
Envoy Citadel 请求证书 / 密钥轮换 gRPC
Citadel Envoy 下发 X.509 证书 gRPC (SDS)
版本演进提示:在 Istio 1.5+ 版本中,Mixer 的功能逐渐被 Envoy 内置的 Wasm 插件和 Telemetry v2 取代,控制平面组件趋向于合并(如 Istiod 将 Pilot、Citadel、Galley 整合为一个单体进程)。但理解原始架构的职责划分,对于排查问题和理解新架构的设计思路仍然至关重要。