1. 服务网格概述

1.1 服务网格的定义

服务网格(Service Mesh)是云原生时代用于处理服务间通信的基础设施层。它通过将通信逻辑从业务代码中剥离,下沉为独立的代理层,实现对服务间调用的流量管理、安全策略、可观测性的统一管控。

核心思想:服务网格不关心业务逻辑,只关心“服务如何到达另一个服务”。它让开发者只需关注业务代码,而将熔断、重试、超时、负载均衡、加密认证等分布式治理能力交给网格层。

服务网格的典型架构包含两个关键组件:

组件 角色 部署形态
数据平面(Data Plane) 负责实际的流量转发、策略执行 以 Sidecar 代理模式注入每个 Pod
控制平面(Control Plane) 负责配置下发、证书管理、服务发现 独立部署的集中式组件

1.2 发展历程

服务网格的演进经历了三个阶段:

  1. 第一阶段:库依赖时代(2014 年前)
    开发者直接在代码中引入 Hystrix、Ribbon 等熔断/负载均衡库。缺点是语言绑定、升级困难、治理逻辑与业务代码耦合。
  2. 第二阶段:Sidecar 代理萌芽(2014–2016)
    Netflix Prana、Buoyant 的 Linkerd 率先提出将代理独立部署。2016 年,William Morgan 正式提出“Service Mesh”术语。
  3. 第三阶段:Istio 与标准化(2017 至今)
    Google/IBM/Lyft 联合发布 Istio,基于 Envoy 代理,将控制平面与数据平面彻底分离,成为 CNCF 毕业项目,引领服务网格走向生产化。
关键里程碑:2017 年 Istio 0.1 发布,首次引入 Pilot、Mixer、Citadel 三大控制面组件,定义了现代服务网格的控制面架构范式。

1.3 与 Kubernetes 的关系

Kubernetes 提供了容器编排与基础服务发现能力,但不解决服务间的高级通信治理问题。服务网格在 Kubernetes 之上构建了第二层网络基础设施:

  • Kubernetes 提供:Pod 生命周期管理、Service 抽象、DNS 解析、基础负载均衡。
  • 服务网格补充:细粒度流量路由、灰度发布、mTLS 加密、分布式追踪、故障注入、熔断降级。

两者是互补而非替代关系。Kubernetes 是服务网格的最佳运行底座,服务网格是 Kubernetes 网络能力的延伸。

能力维度 Kubernetes 原生 服务网格(Istio)
服务发现 Service + DNS 基于 Envoy EDS 的实时端点发现
流量路由 仅轮询/会话保持 权重、Header、URI 匹配、镜像流量
安全通信 需手动配置 mTLS 自动 mTLS + 证书轮换
可观测性 基础 Metrics 全链路 Tracing + 访问日志 + 拓扑

1.4 Istio 在服务网格中的角色

Istio 是目前生产环境最广泛采用的服务网格实现。它在服务网格生态中扮演以下核心角色:

  • 控制平面标准实现者:提供 Istiod 统一组件,整合了 Pilot(服务发现与配置下发)、Citadel(证书管理)、Galley(配置验证)的能力。
  • Envoy 代理的编排者:Istio 默认使用 Envoy 作为数据平面代理,通过 xDS 协议动态下发监听器、路由、集群、端点等配置。
  • 多集群/多网络连接器:支持跨集群、跨网络的服务互联,提供统一的网格边界。
  • 安全策略执行者:通过 AuthorizationPolicy、PeerAuthentication 等 CRD 实现零信任安全模型。
注意:Istio 并非唯一服务网格实现。Linkerd、Consul Connect、Kuma 等也是成熟方案。但 Istio 在功能丰富度、社区活跃度、企业采用率上处于领先地位,是学习服务网格的首选。

1.5 Istio 整体架构图

下图展示了 Istio 的核心架构,包含控制平面 Istiod 与数据平面 Envoy 代理的关系:

Istio 整体架构 控制平面(Control Plane) Istiod Pilot + Citadel + Galley xDS 协议 数据平面(Data Plane) Pod A App Envoy Pod B App Envoy 服务间流量 业务容器 Envoy Sidecar 代理 Istiod 控制面

1.6 本章小结

服务网格是云原生微服务治理的关键基础设施。Istio 作为当前最成熟的服务网格实现,通过控制平面 Istiod 与数据平面 Envoy 代理的协作,为 Kubernetes 集群提供了流量管理、安全通信、可观测性三大核心能力。理解服务网格的定义、发展脉络及其与 Kubernetes 的关系,是后续深入学习 Istio 控制面架构的基础。