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 可以与其联动,确保进入集群后的流量依然受到一致的策略管控。
2.2 跨集群服务发现原理
ClusterMesh 实现跨集群服务发现的核心机制是 Global Service。它通过将多个集群中的同名 Service 合并为一个逻辑端点,使得客户端无需关心目标 Pod 位于哪个集群。
2.2.1 核心组件与流程
- ClusterMesh Agent:每个集群中的 Cilium Agent 负责监听本地 Kubernetes Service 和 Endpoint 变化。
- KVStore 同步:Agent 将本地 Service 信息(Cluster ID、Service Name、后端 IP)同步到共享的 KVStore(如 etcd)。
- Global Service 构建:所有集群的 Agent 从 KVStore 读取其他集群的 Service 信息,在本地构建 Global Service 视图。
- DNS 与 Service 解析:当 Pod 通过 DNS 查询
service.namespace.global时,ClusterMesh 返回所有集群中的后端 IP 列表。
关键点: 跨集群服务发现依赖 Cluster ID 的唯一性。每个集群必须分配一个唯一的 Cluster ID(1-255),否则会导致服务冲突或路由错误。
2.3 跨集群负载均衡原理
ClusterMesh 的跨集群负载均衡基于 eBPF 实现,在数据平面直接完成流量分发,无需经过传统的 kube-proxy 或用户态代理。
2.3.1 负载均衡策略
| 策略 | 说明 | 适用场景 |
|---|---|---|
| 随机选择 (Random) | 从所有集群的健康后端中随机选取一个 | 通用场景,后端性能均匀 |
| 轮询 (Round Robin) | 按顺序依次选择后端 | 需要均匀分配请求的场景 |
| 最小连接 (Least Connection) | 选择当前活跃连接数最少的后端 | 长连接或请求处理时间差异大的场景 |
| 本地优先 (Local Priority) | 优先选择同集群后端,跨集群作为备份 | 降低跨集群延迟,提高本地亲和性 |
2.3.2 数据平面转发流程
- 源 Pod 发起请求:目标 Service 的 ClusterIP 被解析为 Global Service 的虚拟 IP。
- eBPF 程序拦截:Cilium 的 eBPF 程序在网卡层拦截数据包,根据 Global Service 的负载均衡策略选择后端。
- 封装与隧道:如果目标后端在远端集群,数据包通过 Geneve 或 VXLAN 隧道封装,携带目标 Cluster ID。
- 远端解封装:远端集群的 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 实现,支持多种策略,数据平面通过隧道封装完成转发。