1. 服务网格概述

1.1 什么是服务网格

服务网格(Service Mesh)是云原生架构中用于处理服务间通信的基础设施层。它将流量管理、可观测性、安全策略等能力从业务代码中剥离,下沉到独立的代理进程中,实现通信治理与业务逻辑的完全解耦。

核心设计理念:

  • 透明代理:Sidecar 代理拦截所有进出流量,对业务容器零侵入。
  • 控制面与数据面分离:控制面下发策略,数据面执行转发与治理。
  • 声明式策略:熔断、重试、超时、限流等均通过 CRD 或 API 配置。
关键认知:服务网格不是“服务发现”或“API 网关”的替代品,而是对它们能力的补充与下沉。网关处理南北向流量,网格处理东西向流量。

1.2 Istio 与 Linkerd 核心架构对比

当前社区最成熟的两大服务网格实现是 Istio 和 Linkerd。两者均遵循控制面/数据面分离原则,但在架构复杂度、资源开销、功能侧重上存在显著差异。

对比维度 Istio Linkerd
数据面代理 Envoy(C++,功能丰富,资源开销较高) Linkerd-proxy(Rust,轻量,内存占用低)
控制面组件 Pilot、Mixer(已弃用)、Citadel、Galley 等多组件 控制面仅一个二进制(destination + identity)
安装复杂度 较高,需管理多个 CRD 与组件 较低,一条 CLI 命令即可注入
性能开销 P99 延迟增加约 5-15ms(视配置而定) P99 延迟增加约 1-5ms
协议支持 HTTP/1.1、HTTP/2、gRPC、TCP、WebSocket 等 HTTP/1.1、HTTP/2、gRPC、TCP
熔断/重试 通过 VirtualService + DestinationRule 配置 通过 ServiceProfile CRD 配置
可观测性 内置 Prometheus、Grafana、Kiali、Jaeger 内置 Prometheus、Grafana,依赖外部 tracing
社区生态 最广泛,企业级案例丰富 较小,但 CNCF 毕业项目,稳定性高
选型建议:若团队追求功能全面、生态丰富且愿意投入运维成本,选 Istio;若追求极简运维、低资源开销、快速上手,选 Linkerd。

1.3 Sidecar 代理原理

Sidecar 代理是服务网格的执行单元。它作为一个独立的容器与业务容器部署在同一个 Pod 中,共享网络命名空间,拦截并处理所有进出 Pod 的流量。

核心工作流程:

  1. 流量劫持:通过 iptables 规则将入站和出站流量重定向到 Sidecar 代理的监听端口。
  2. 策略匹配:代理根据控制面下发的配置(路由规则、熔断阈值、重试策略等)匹配当前请求。
  3. 协议解析:代理解析应用层协议(HTTP/2、gRPC、TCP),提取元数据用于决策。
  4. 治理执行:执行熔断、重试、超时、负载均衡、流量拆分等动作。
  5. 遥测上报:将请求延迟、状态码、错误率等指标上报给控制面或监控系统。
常见陷阱:Sidecar 代理的启动顺序必须晚于业务容器,否则 iptables 规则可能尚未生效,导致流量绕过代理。建议在 Pod 启动时设置 initContainers 提前注入 iptables 规则。
Sidecar 代理流量劫持与治理流程 业务容器 App (HTTP/gRPC) Sidecar 代理 Envoy / Linkerd-proxy iptables 规则 流量重定向 控制面 Pilot / Destination 监控系统 Prometheus / Grafana 出站流量 规则注入 策略下发 遥测上报 外部服务 / 下游 转发 Pod 内共享网络命名空间,Sidecar 代理 对业务容器完全透明

1.4 服务网格的典型部署模型

在实际生产环境中,服务网格通常以多集群、多租户的形式部署。以下是一个标准的 Istio 部署拓扑示意:

Istio 多集群部署拓扑(简化) 集群 1 (生产) Istiod Pod A (Sidecar) Pod B (Sidecar) Pod C (Sidecar) Pod D (Sidecar) 集群 2 (金丝雀) Istiod Pod E (Sidecar) Pod F (Sidecar) Pod G (Sidecar) East-West Gateway 全局控制面(共享配置与证书) 每个集群拥有独立的控制面,通过 East-West Gateway 实现跨集群服务发现与流量路由

1.5 服务网格的治理能力全景

服务网格提供的治理能力可以归纳为以下四个维度:

治理维度 核心能力 典型配置对象(Istio)
流量管理 路由规则、流量拆分、镜像、超时、重试 VirtualService, DestinationRule
可观测性 指标、日志、分布式追踪、访问日志 Telemetry API, EnvoyFilter
安全 mTLS、RBAC、JWT 认证、授权策略 PeerAuthentication, AuthorizationPolicy
韧性 熔断、连接池限制、异常点检测、限流 DestinationRule (trafficPolicy)