2. 服务网格基础回顾:Istio/Envoy 核心架构
在进入跨环境迁移与兼容矩阵对账之前,必须对齐服务网格的基础认知。本章聚焦 Istio 与 Envoy 的核心架构、数据面与控制面的职责划分,以及 Sidecar 注入原理。这些概念是后续升级窗口演练中所有决策的底层依据。
2.1 整体架构:控制面与数据面
服务网格将网络通信能力从业务容器中剥离,形成独立的基础设施层。Istio 采用典型的控制面/数据面分离架构:
- 数据面(Data Plane):由一组智能代理(Envoy)组成,以 Sidecar 模式部署在每个业务 Pod 中,负责拦截、处理、转发所有进出 Pod 的流量。
- 控制面(Control Plane):统一管理数据面代理的配置下发、策略分发、证书签发与遥测收集。Istio 1.5+ 将控制面组件合并为
istiod单体进程。
关键认知: 控制面不参与数据路径转发,只负责下发配置;数据面代理独立执行流量策略。这种分离使得升级控制面时,数据面流量不中断——前提是配置兼容。
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 创建时自动注入。
注入过程包含三个关键步骤:
- Webhook 拦截:Kube-APIServer 在 Pod 创建请求到达时,调用 Istio 的 sidecar-injector webhook。
- 配置模板渲染:webhook 根据 Pod 的命名空间标签(
istio-injection=enabled)和全局注入配置,渲染出包含istio-init和istio-proxy容器的 Pod 规范。 - iptables 规则写入:
istio-init容器以特权模式运行,在 Pod 网络命名空间内写入 iptables 规则,将入站/出站流量重定向到 Envoy 的 15001/15006 端口。
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 的接收能力是否对齐。