一、服务网格的演进轨迹

从 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 MeshAmbient (Istio)
L3-L4Envoy (用户态)eBPF (内核态)ztunnel (每节点共享)
L7Envoy (每 Pod)Envoy WaypointEnvoy Waypoint
内存开销(50 Pod/节点)~3-10GB~100MB (eBPF) + Waypoint~300MB (ztunnel) + Waypoint
Pod 启动等待是(Sidecar 需先启动)
升级周期高(逐 Pod 重启)中(内核模块升级)中(Waypoint 独立升级)
L7 策略粒度Pod + 请求级Waypoint + 请求级Waypoint + 请求级
内核版本要求最低 3.105.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 的统一模型。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部