2. 服务网格基础回顾:Istio/Envoy 核心架构

在进入跨环境迁移与兼容矩阵对账之前,必须对齐服务网格的基础认知。本章聚焦 Istio 与 Envoy 的核心架构、数据面与控制面的职责划分,以及 Sidecar 注入原理。这些概念是后续升级窗口演练中所有决策的底层依据。

2.1 整体架构:控制面与数据面

服务网格将网络通信能力从业务容器中剥离,形成独立的基础设施层。Istio 采用典型的控制面/数据面分离架构:

  • 数据面(Data Plane):由一组智能代理(Envoy)组成,以 Sidecar 模式部署在每个业务 Pod 中,负责拦截、处理、转发所有进出 Pod 的流量。
  • 控制面(Control Plane):统一管理数据面代理的配置下发、策略分发、证书签发与遥测收集。Istio 1.5+ 将控制面组件合并为 istiod 单体进程。
关键认知: 控制面不参与数据路径转发,只负责下发配置;数据面代理独立执行流量策略。这种分离使得升级控制面时,数据面流量不中断——前提是配置兼容。
Istio 控制面与数据面架构 Istio 控制面与数据面架构 控制面(Control Plane)— istiod Pilot(配置下发) | Citadel(证书管理) | Galley(配置验证与分发) xDS 配置 / 证书推送 数据面(Data Plane)— Envoy Sidecar 代理集群 业务容器 Envoy Pod A iptables 拦截 业务容器 Envoy Pod B iptables 拦截 业务容器 Envoy Pod C iptables 拦截 mTLS mTLS

2.2 Envoy:数据面核心代理

Envoy 是 Istio 数据面的默认代理,用 C++ 编写,具备高性能与低资源消耗。其核心能力包括:

能力维度 具体功能 对应 Istio 配置资源
L4/L7 流量拦截 基于 iptables 透明劫持入站/出站流量 Sidecar、ServiceEntry
服务发现与负载均衡 支持 EDS、CDS 动态端点发现,多种 LB 算法 DestinationRule、WorkloadEntry
TLS/mTLS 终止与发起 自动证书轮换,双向认证 PeerAuthentication、DestinationRule
熔断与重试 连接池管理、异常点检测、超时控制 DestinationRule
可观测性 HTTP/gRPC 指标、访问日志、分布式追踪 Telemetry、EnvoyFilter
升级关注点: Envoy 的 xDS API 版本(如 v2 vs v3)是跨版本兼容的核心检查项。Istio 1.10+ 已完全移除 v2 API,升级前必须确认数据面代理支持 v3。

2.3 Sidecar 注入原理

Sidecar 注入是服务网格数据面部署的起点。Istio 支持两种注入方式:

  • 手动注入:使用 istioctl kube-inject 修改 YAML 文件,在部署前注入 Envoy 容器与 init 容器。
  • 自动注入:基于 Kubernetes MutatingAdmissionWebhook,在 Pod 创建时自动注入。

注入过程包含三个关键步骤:

  1. Webhook 拦截:Kube-APIServer 在 Pod 创建请求到达时,调用 Istio 的 sidecar-injector webhook。
  2. 配置模板渲染:webhook 根据 Pod 的命名空间标签(istio-injection=enabled)和全局注入配置,渲染出包含 istio-init 和 istio-proxy 容器的 Pod 规范。
  3. iptables 规则写入:istio-init 容器以特权模式运行,在 Pod 网络命名空间内写入 iptables 规则,将入站/出站流量重定向到 Envoy 的 15001/15006 端口。
Sidecar 自动注入流程 Sidecar 自动注入流程(MutatingWebhook) 1. Pod 创建请求 kubectl apply / Deployment 2. Webhook 拦截 MutatingAdmissionWebhook 3. 模板渲染 注入 istio-init + proxy 4. 返回 修改后 Pod 注入后 Pod 内部结构 • istio-init(init 容器):写入 iptables 规则,重定向流量到 Envoy • istio-proxy(主容器):运行 Envoy 代理,处理所有进出流量 • 业务容器:无感,仍监听原始端口,Envoy 透明代理

2.4 控制面职责详解

Istio 控制面 istiod 整合了三个核心组件,各自承担关键职责:

组件 职责 升级影响范围
Pilot 服务发现抽象、xDS 配置生成与下发(LDS/RDS/CDS/EDS) 数据面配置兼容性、端点发现延迟
Citadel 证书签发与管理、mTLS 密钥轮换 证书过期、SPIFFE 信任域变更
Galley 配置验证、格式转换、状态分发 CRD 版本兼容、配置校验规则
升级风险提示: 控制面升级时,Pilot 下发的 xDS 版本必须与数据面 Envoy 支持的版本匹配。例如,从 Istio 1.9 升级到 1.10,xDS 从 v2 切换到 v3,若数据面 Envoy 未同步升级,将导致配置推送失败,流量中断。

2.5 数据面与控制面的交互协议

控制面与数据面通过 xDS(Discovery Service)协议通信,这是 Envoy 动态配置的核心机制:

  • LDS(Listener Discovery Service):下发监听器配置,定义 Envoy 在哪些端口监听流量。
  • RDS(Route Discovery Service):下发路由规则,决定流量转发到哪个集群。
  • CDS(Cluster Discovery Service):下发上游集群定义,包括端点、负载均衡策略。
  • EDS(Endpoint Discovery Service):动态下发集群的端点列表(Pod IP)。
  • SDS(Secret Discovery Service):下发 TLS 证书与私钥,实现自动 mTLS。

在跨环境迁移场景中,xDS 协议的版本一致性是兼容矩阵对账的第一道关卡。Envoy 1.19+ 仅支持 xDS v3,而 Istio 1.9 及更早版本默认使用 v2。升级窗口演练必须验证控制面下发的 xDS 版本与数据面 Envoy 的接收能力是否对齐。