3、Istio控制平面架构:Pilot、Mixer(历史)、Citadel、Galley组件职责与交互流程

Istio 控制平面是服务网格的“大脑”,负责将数据平面(Envoy)的配置下发、安全策略、遥测采集与策略执行统一管理。在 1.5 版本之前,Istio 控制平面由四个核心组件构成:Pilot、Mixer(已废弃)、Citadel 和 Galley。理解这些组件的职责与交互流程,是掌握 Istio 架构演进与选型对比的基础。

3.1 组件职责总览

组件 核心职责 状态
Pilot 服务发现、流量管理规则下发、Envoy xDS 配置推送 核心组件,持续演进
Mixer 遥测数据收集、访问控制策略执行、配额管理 1.5 版本后废弃,功能并入 Envoy 与代理层
Citadel 证书签发与管理、身份认证、mTLS 密钥分发 核心组件,持续演进
Galley 配置验证、输入格式转换、配置分发与状态管理 1.5 版本后功能并入 Pilot 与核心 API 层
架构演进提示: Istio 1.5 之后将 Pilot、Citadel、Galley 合并为单一的 istiod 组件,简化部署与运维。但理解拆分架构有助于深入掌握配置下发与安全认证的底层原理。

3.2 Pilot:服务发现与配置下发核心

Pilot 是 Istio 控制平面中与数据平面交互最频繁的组件。它负责将用户定义的流量管理规则(VirtualService、DestinationRule)与服务注册信息转换为 Envoy 可理解的 xDS 协议配置。

  • 服务发现:对接 Kubernetes、Consul、Eureka 等平台,获取服务实例列表。
  • 规则转换:将 Istio CRD(Custom Resource Definition)转换为 Envoy 的 Listener、Cluster、Route、Endpoint 配置。
  • xDS 推送:通过 gRPC 流式推送(ADS)将配置实时下发到所有 Sidecar Envoy。
  • 健康检查:监控 Envoy 连接状态,处理断连重推。

3.3 Mixer(历史组件):遥测与策略执行

注意: Mixer 在 Istio 1.5 版本中已被正式废弃,其功能被重构并下沉到 Envoy 代理层。以下内容仅作为历史架构参考,用于理解 Istio 设计理念的演变。

Mixer 最初被设计为 Istio 的“策略与遥测中枢”,所有 Envoy 代理在转发请求前/后都会向 Mixer 发送 Check 和 Report 请求。

  • Check:前置调用,用于访问控制、速率限制、配额校验。
  • Report:后置调用,用于日志、指标、追踪数据的聚合与上报。
  • 适配器模型:通过适配器对接 Prometheus、Stackdriver、Datadog 等后端系统。

Mixer 的废弃主要源于性能瓶颈:每次请求都增加一次外部 RPC 调用,显著增加延迟。Istio 社区随后将策略执行与遥测采集逻辑直接集成到 Envoy 的 Wasm 扩展或内置 Filter 中。

3.4 Citadel:安全证书管理

Citadel 负责 Istio 中的身份安全与证书生命周期管理,是实现服务间 mTLS 认证的核心组件。

  • CA 服务:作为集群内部的证书颁发机构(CA),为每个工作负载签发 SPIFFE 格式的身份证书。
  • 证书轮换:自动管理证书过期与轮换,默认每 24 小时轮换一次。
  • 密钥分发:通过 Secret 卷挂载或 SDS(Secret Discovery Service)将私钥与证书下发到 Envoy。
  • 身份绑定:将 Kubernetes ServiceAccount 与 SPIFFE ID 绑定,确保身份可信。

3.5 Galley:配置验证与分发

Galley 在早期 Istio 架构中承担配置处理管道的入口角色,负责验证、转换和分发用户提交的 Istio 配置。

  • 配置验证:对用户提交的 VirtualService、DestinationRule 等 CRD 进行语义校验。
  • 格式转换:将 Kubernetes 原生资源格式转换为 Istio 内部统一的配置模型。
  • 状态管理:维护配置的版本与状态,确保 Pilot 获取的配置始终是最新且有效的。
  • 事件监听:监听 Kubernetes API Server 的配置变更事件,触发 Pilot 重新推送。

3.6 组件交互流程

以下 SVG 图展示了 Istio 1.5 之前版本中四个控制平面组件与数据平面 Envoy 之间的核心交互流程:

Istio 控制平面组件交互流程 Istio 控制平面组件交互流程(1.5 之前版本) 用户 / 运维 提交 CRD 配置 Galley 配置验证 & 格式转换 内部配置模型 Pilot xDS 配置生成 & 推送 Citadel 证书签发 & 密钥管理 Mixer(历史) 遥测 & 策略执行 xDS (LDS/RDS/CDS/EDS) SDS / 证书下发 Check / Report Envoy 数据平面(Sidecar 代理) 流量转发 · 策略执行 · 遥测采集 · mTLS 加密 Report(后置遥测上报) 后端系统(Prometheus等) 说明:实线箭头表示配置下发与证书分发,虚线箭头表示遥测数据上报。Mixer 组件在 1.5 版本后已废弃。

3.7 交互流程步骤详解

  1. 配置提交:用户通过 kubectl 或 Istio API 提交 VirtualService、DestinationRule 等 CRD 配置。
  2. Galley 验证与转换:Galley 监听 API Server 的配置变更,对 CRD 进行语义校验,并将其转换为 Istio 内部统一的配置模型。
  3. Pilot 获取配置:Pilot 从 Galley 拉取或接收推送的内部配置模型,同时从平台(如 Kubernetes)获取服务注册信息。
  4. Citadel 证书管理:Citadel 监听新的工作负载启动,为其签发 SPIFFE 证书,并通过 SDS 或 Secret 卷挂载下发到 Envoy。
  5. xDS 配置下发:Pilot 将流量规则与服务发现信息转换为 Envoy 的 xDS 配置(LDS、RDS、CDS、EDS),通过 gRPC 流式推送到每个 Sidecar Envoy。
  6. Mixer 策略与遥测(历史):Envoy 在请求处理过程中,向 Mixer 发送 Check 请求进行策略校验,并在请求结束后发送 Report 上报遥测数据。Mixer 通过适配器将数据转发到后端系统。

3.8 组件交互的关键设计要点

  • 配置推送的最终一致性:Pilot 采用 ADS(Aggregated Discovery Service)模式,保证 Envoy 接收到的 Listener、Route、Cluster、Endpoint 配置版本一致,避免流量中断。
  • 证书轮换的无缝性:Citadel 通过 SDS 协议实现证书热更新,Envoy 无需重启即可加载新证书,保证 mTLS 连接不中断。
  • Mixer 的性能瓶颈:每次请求都增加一次外部 RPC 调用,导致延迟增加约 5-10ms,这是 Mixer 被废弃的主要原因。
  • Galley 的单点故障:在早期架构中,Galley 是配置处理的唯一入口,一旦故障会导致新配置无法生效。合并到 istiod 后简化了故障域。
架构选型启示: 理解 Istio 1.5 之前的四组件架构,有助于在对比其他服务网格(如 Linkerd、Consul Connect)时,评估控制平面的复杂度、性能开销与运维成本。Istio 后续的 istiod 合并正是为了降低这种复杂度。