2. 多集群网络基础:东西向流量、南北向流量、跨集群服务发现、跨集群负载均衡原理

在进入 ClusterMesh 的权限与审计细节之前,必须首先建立多集群网络的核心认知。本章将拆解四个关键概念:东西向流量、南北向流量、跨集群服务发现以及跨集群负载均衡。理解这些原理是后续配置门禁策略与审计规则的基础。

2.1 东西向流量 vs 南北向流量

在多集群架构中,流量方向决定了网络策略的设计思路与安全边界。

维度 东西向流量 (East-West) 南北向流量 (North-South)
定义 集群内部 Pod 之间、或跨集群 Pod 之间的通信 外部客户端(用户、API 网关、外部服务)进入集群的流量
典型场景 微服务 A 调用微服务 B(同集群或跨集群) Ingress / LoadBalancer 接收外部 HTTP 请求
安全关注点 服务间身份认证、加密、细粒度授权 入口认证、WAF、速率限制、TLS 终止
ClusterMesh 角色 提供跨集群服务网格与加密隧道 通常由 Ingress Gateway 或 API Gateway 处理
关键认知: ClusterMesh 主要解决的是东西向流量的安全与可观测性问题。南北向流量通常由集群入口网关管理,但 ClusterMesh 可以与其联动,确保进入集群后的流量依然受到一致的策略管控。
东西向 vs 南北向流量示意图 集群 A Pod A1 Pod A2 集群 B Pod B1 Pod B2 东西向流量(跨集群) 外部客户端 南北向流量 东西向(跨集群 Pod 通信) 南北向(外部入口)

2.2 跨集群服务发现原理

ClusterMesh 实现跨集群服务发现的核心机制是 Global Service。它通过将多个集群中的同名 Service 合并为一个逻辑端点,使得客户端无需关心目标 Pod 位于哪个集群。

2.2.1 核心组件与流程

  1. ClusterMesh Agent:每个集群中的 Cilium Agent 负责监听本地 Kubernetes Service 和 Endpoint 变化。
  2. KVStore 同步:Agent 将本地 Service 信息(Cluster ID、Service Name、后端 IP)同步到共享的 KVStore(如 etcd)。
  3. Global Service 构建:所有集群的 Agent 从 KVStore 读取其他集群的 Service 信息,在本地构建 Global Service 视图。
  4. DNS 与 Service 解析:当 Pod 通过 DNS 查询 service.namespace.global 时,ClusterMesh 返回所有集群中的后端 IP 列表。
关键点: 跨集群服务发现依赖 Cluster ID 的唯一性。每个集群必须分配一个唯一的 Cluster ID(1-255),否则会导致服务冲突或路由错误。
跨集群服务发现流程 集群 1 (ID=1) Cilium Agent Service: frontend Endpoint: 10.0.1.5 集群 2 (ID=2) Cilium Agent Service: frontend Endpoint: 10.1.1.8 共享 KVStore (etcd) /cilium/state/services/v1/ cluster=1/frontend → 10.0.1.5 cluster=2/frontend → 10.1.1.8 cluster=3/frontend → 10.2.1.3 Agent 将本地 Service + Endpoint 写入 KVStore,同时读取远端集群数据 构建 Global Service 视图,DNS 返回所有后端 IP

2.3 跨集群负载均衡原理

ClusterMesh 的跨集群负载均衡基于 eBPF 实现,在数据平面直接完成流量分发,无需经过传统的 kube-proxy 或用户态代理。

2.3.1 负载均衡策略

策略 说明 适用场景
随机选择 (Random) 从所有集群的健康后端中随机选取一个 通用场景,后端性能均匀
轮询 (Round Robin) 按顺序依次选择后端 需要均匀分配请求的场景
最小连接 (Least Connection) 选择当前活跃连接数最少的后端 长连接或请求处理时间差异大的场景
本地优先 (Local Priority) 优先选择同集群后端,跨集群作为备份 降低跨集群延迟,提高本地亲和性

2.3.2 数据平面转发流程

  1. 源 Pod 发起请求:目标 Service 的 ClusterIP 被解析为 Global Service 的虚拟 IP。
  2. eBPF 程序拦截:Cilium 的 eBPF 程序在网卡层拦截数据包,根据 Global Service 的负载均衡策略选择后端。
  3. 封装与隧道:如果目标后端在远端集群,数据包通过 Geneve 或 VXLAN 隧道封装,携带目标 Cluster ID。
  4. 远端解封装:远端集群的 Cilium Agent 解封装数据包,直接转发给目标 Pod。
注意: 跨集群负载均衡依赖于集群间的网络连通性。如果集群间存在防火墙或 NAT,需要确保 Geneve(UDP 6081)或 VXLAN(UDP 8472)端口放行。同时,建议启用 MTU 调整(通常设置为 1450 或更小)以避免隧道封装导致的分片。

2.4 本章小结

  • 东西向流量是 ClusterMesh 的核心管控对象,跨集群 Pod 通信通过加密隧道实现。
  • 南北向流量由 Ingress/Gateway 处理,但 ClusterMesh 可提供一致的网络安全策略。
  • 跨集群服务发现依赖 Global Service 和共享 KVStore,Cluster ID 唯一性是前提。
  • 跨集群负载均衡基于 eBPF 实现,支持多种策略,数据平面通过隧道封装完成转发。