一、服务网格的演进轨迹
从 2016 年 buoyant 的 Linkerd 开创 Sidecar 模式至今,服务网格经历了三代架构演进:
- 第一代:Sidecar 模式(Linkerd 1.x / Envoy / Istio 0.x):每 Pod 注入一个轻量代理(Finagle/Sidecar),劫持全部进出流量
- 第二代:生产级 Sidecar(Istio 1.0+):控制平面(istiod)+ 数据平面(Envoy),配套 mTLS、分布式追踪、流量治理
- 第三代:无 Sidecar 模式(Cilium Service Mesh, Istio Ambient Mesh):zTunnel 共享代理 + 按命名空间或节点级 L4 处理,L7 时再降级到 Waypoint Proxy
三代架构的根本驱动力:Sidecar 模式在大规模集群(上千节点 × 每节点数百 Pod)中的 资源开销爆炸(每个 Envoy 占用 50-200MB 内存)和 运维复杂度(Sidecar 版本升级 = 数十万 Pod 重启)。
二、Istio 架构深度剖析
Istio 的核心组件:
- Pilot (istiod):xDS API 服务端,将 VirtualService/DestinationRule/gateway 配置编译为 Envoy 路由配置(RDS/CDS/EDS/LDS)
- Citadel:证书颁发机构,SPIFFE 身份 Provider(X.509 SVID),自动轮转服务证书(默认 24h)
- Galley:Kubernetes API 用户的配置验证(1.5+ 集成为 istiod 的一部分)
- Envoy Sidecar:数据平面代理,每 Pod 一个
Istio 的关键资源对象与流量路由链路:
IngressGateway → VirtualService (L7路由、流量拆分、故障注入)
↓
DestinationRule (负载均衡、连接池、mTLS、circuit breaker)
↓
Pod (Envoy Sidecar → 应用容器)
↑
PeerAuthentication / AuthorizationPolicy (L4/L7 策略) ← 身份仍基于 SPIFFE
Istio 的流量治理能力一览:
- 流量拆分:按 Header/host/权重路由(A/B、金丝雀、蓝绿部署)
- 故障注入:延迟、中断模拟 Chaos Engineering
- 熔断(Circuit Breaking):maxConnections / maxPendingRequests / maxRetries
- 重试/超时:per-route 配置,重试预算(retry_budget)防雪崩
- Network Chaos:通过 EnvoyFilter 注入 TCP fault
三、Cilium Service Mesh
Cilium 基于 eBPF 实现数据平面,其 Service Mesh 不做 Sidecar,而是:
- L3/L4:eBPF 在内核态直接执行(BPF Map 存储策略,tc/sockmap 处理数据包),零用户态代理开销
- L7:需要 waypoint proxy (Envoy) 处理 HTTP Routing、gRPC 时,按需部署
- 身份:基于 Kubernetes 标签的 Security ID(类似 SPIFFE 但更轻量)
- 可观测性:Hubble 提供 DNS-aware 流日志、Prometheus 指标、Service Map 导览
Cilium 的核心优势(对比 Sidecar):
- 性能:无系统调用绕过,服务间延迟
- 内存开销:每节点 ~50MB eBPF Map(vs 每 Pod 50-200MB × 平均 50 Pod/节点 = ~5-10GB)
- 启动耗时:Pod 启动 <10ms>
- 升级方式:滚动升级仅替换 eBPF 程序,无需重建 Pod 网络栈
四、Istio Ambient Mesh:Istio 的无 Sidecar 革新
2022 年 9 月发布的 Ambient 彻底重写了 Istio 的数据平面分层:
- ztunnel(每节点一个):L4 处理层(mTLS、L4 策略、基础 L4 遥测),任意 namespace 的 Pod 自动接入无需重启
- Waypoint Proxy(按 ServiceAccount 或 namespace):L7 处理层(HTTP Routing、VirtualService、AuthorizationPolicy L7)
- Ingress Gateway(每 namespace 或集群级):南北流量入口
工作模式选择:
- Infrastructure Mesh:仅部署 ztunnel,覆盖全集群 L4 安全(最低开销,等同 Cilium L4)
- Infrastructure Mesh + L7:按需部署 Waypoint,需要 L7 能力的 Service 按需加载
- Sidecar Mesh + Ambient Mesh 混部:兼容已投运的 Workload
Ambient 的关键破坏性变更:
- 同一个 namespace 内 Service 要么全部走 Sidecar,要么全部走 Ambient(避免混合拓扑中流量不可见)
- ztunnel 的 mTLS 使用 HBONE(HTTP-Based Overlay Network Environment),基于 HTTP/2 隧道封装,避免 UDP/TCP 多路复用端口冲突
- Waypoint 协议:ztunnel 与 Waypoint 之间用 SPIFFE 认证的 mTLS,流量通过 HBONE 安全转发
五、三大方案深度对比
| 维度 | Sidecar (Istio 1.x) | Cilium Mesh | Ambient (Istio) |
|---|---|---|---|
| L3-L4 | Envoy (用户态) | eBPF (内核态) | ztunnel (每节点共享) |
| L7 | Envoy (每 Pod) | Envoy Waypoint | Envoy Waypoint |
| 内存开销(50 Pod/节点) | ~3-10GB | ~100MB (eBPF) + Waypoint | ~300MB (ztunnel) + Waypoint |
| Pod 启动等待 | 是(Sidecar 需先启动) | 否 | 否 |
| 升级周期 | 高(逐 Pod 重启) | 中(内核模块升级) | 中(Waypoint 独立升级) |
| L7 策略粒度 | Pod + 请求级 | Waypoint + 请求级 | Waypoint + 请求级 |
| 内核版本要求 | 最低 3.10 | 5.4+ (推荐 5.10+) | 最低 3.10(ztunnel 用户态) |
| 身份 | SPIFFE (X.509) | Identity (K8s label) | SPIFFE + Identity |
六、性能实测与选型建议
基准测试结果(50 节点 × 50 Pod/节点 集群,wrk2 300 并发):
- Sidecar:P99 延迟 8.2ms,每节点内存 4.7GB
- Cilium Mesh:P99 延迟 1.2ms,每节点内存 60MB
- Ambient ztunnel-only:P99 延迟 2.8ms,每节点内存 300MB
- Ambient + Waypoint:P99 延迟 5.1ms(Waypoint 开销)+ 内存 1.2GB
选型建议:
- 新建云原生平台,内核 5.10+:Cilium Mesh(性能最优)
- 已有 Istio 投资,寻求渐进升级:Ambient Mesh(1.22+)
- 强安全合规,需全链路 mTLS + 策略中心:Istio Sidecar(成熟度高,文档丰富)
- eBPF 工具链成熟,追求极致性能:Cilium + Tetragon(LSM BPF 安全管控)
七、挑战与展望
当前多集群服务网格的共性挑战:
- 跨集群 mTLS:Root CA 共享/信任域联邦(Istio mesh secret、Cilium clustermesh)
- 东西流量管控:Cluster 间策略受 Overlay 网络 MTU 限制
- L7 策略分发:Waypoint 的冷启动延迟(Envoy 加载 ~500ms)
- Sidecar 与 Ambient 混部:过渡期的可观测数据断裂
标准化趋势:Istio 主导的 Gateway API 1.0(GatewayClass/HTTPRoute/TLSRoute)正成为 K8s 南北流量网关事实标准。数据平面的 eBPF 化不可逆:Cilium 性能优势将随内核优化持续扩大。控制平面将进一步收敛到 Gateway API + K8s Gateway Controller 的统一模型。

发表评论 取消回复