4. 租户隔离模型设计:基于 VLAN/VXLAN/Geneve 的 Overlay 网络隔离,以及基于 Cilium 的 CNI 实现
在多租户云原生环境中,网络隔离是保障安全与性能的基石。本章深入剖析从传统 VLAN 到现代 VXLAN/Geneve Overlay 网络的演进,并重点阐述如何通过 Cilium 这一高性能 CNI 插件实现细粒度的租户隔离策略。
4.1 Overlay 网络隔离技术演进
租户隔离的核心在于将不同租户的流量在逻辑上或物理上完全分开。下表对比了三种主流 Overlay 封装技术的核心差异:
| 特性 | VLAN (802.1Q) | VXLAN | Geneve |
|---|---|---|---|
| 标准 | IEEE 802.1Q | RFC 7348 | RFC 8926 |
| 隔离标识 | 12-bit VLAN ID (VID) | 24-bit VNI (VXLAN Network Identifier) | 24-bit VNI (Virtual Network Identifier) |
| 最大租户数 | 4094 | 约 1600 万 | 约 1600 万 |
| 封装协议 | 以太网帧内嵌 Tag | MAC-in-UDP (外层 UDP 端口 4789) | MAC-in-UDP (外层 UDP 端口 6081) |
| 扩展性 | 受限于 STP 和 VLAN 数量 | 通过 IP 网络扩展,支持多播/单播 | 支持可变长度 TLV 选项,扩展性最强 |
| 适用场景 | 小型数据中心,物理网络隔离 | 大规模虚拟化/云平台 | 需要元数据传递的复杂 Overlay 场景 |
选型建议: 在 Kubernetes 环境中,VXLAN 因其成熟度和广泛的硬件卸载支持成为默认选择。Geneve 则在需要携带额外元数据(如安全策略、租户身份)的场景下更具优势,Cilium 对 Geneve 提供了原生支持。
4.2 基于 Cilium 的 CNI 租户隔离实现
Cilium 利用 eBPF 技术,在 Overlay 网络之上实现了比传统 CNI 更高效、更灵活的租户隔离。其核心机制包括:
- 基于 Identity 的安全策略: 不再依赖 IP 地址,而是为每个 Pod/租户分配一个 Security Identity,策略基于 Identity 进行匹配,极大简化了大规模集群中的策略管理。
- Overlay 封装与路由: Cilium 支持 VXLAN 和 Geneve 作为数据平面封装模式,同时支持原生路由(Direct Routing)模式以追求极致性能。
- 网络策略 (NetworkPolicy) 增强: 在 Kubernetes 原生 NetworkPolicy 基础上,Cilium 提供了 CiliumNetworkPolicy (CNP) 和 CiliumClusterwideNetworkPolicy (CCNP),支持 L7 协议过滤、DNS 策略、以及基于租户标签的隔离。
关键设计原则: 租户隔离模型采用“身份优先,网络为辅”的策略。每个租户被映射为一个或多个 Kubernetes Namespace,并通过标签(如 tenant=alpha)进行标识。Cilium 自动为这些标签生成 Identity,并下发 eBPF 程序到节点,实现无 iptables 性能损耗的包过滤。
以下 SVG 图展示了 Cilium 在 Overlay 网络中实现租户隔离的架构:
4.3 租户隔离策略配置示例
以下是一个典型的 CiliumNetworkPolicy 配置,用于实现租户 A 与租户 B 之间的严格隔离:
apiVersion: "cilium.io/v2"
kind: CiliumNetworkPolicy
metadata:
name: "tenant-alpha-isolation"
namespace: tenant-alpha
spec:
endpointSelector:
matchLabels:
tenant: alpha
ingress:
- fromEndpoints:
- matchLabels:
tenant: alpha
egress:
- toEndpoints:
- matchLabels:
tenant: alpha
- toEntities:
- world
注意: 上述策略仅允许同租户(tenant=alpha)内的 Pod 互相通信,并允许访问外部世界(world)。所有来自租户 B 的流量将被 eBPF 程序在节点层面直接丢弃,无需经过任何用户态代理,性能损耗极低。
4.4 流量隔离与可视化集成
在 eBPF 网络观测的背景下,租户隔离不仅仅是策略的强制执行,更是可观测性的基础。Cilium 通过 Hubble 组件,能够实时展示每个租户的流量矩阵:
- 租户级流量拓扑: Hubble 自动识别 Identity 和 Namespace 标签,生成按租户分组的服务拓扑图。
- 隔离策略命中统计: 实时显示每条策略的命中次数、允许/拒绝的包数量,帮助运维人员验证隔离效果。
- 异常流量告警: 当检测到跨租户的未授权连接尝试时,Hubble 可以触发告警,并关联到具体的源/目标 Identity。
以下 SVG 图展示了 Hubble 视角下的租户流量隔离可视化:
4.5 性能考量与最佳实践
在 Overlay 网络与 eBPF 结合的场景下,性能优化至关重要:
- 封装开销: VXLAN/Geneve 封装会增加 50-70 字节的包头,需确保物理网络 MTU 配置正确(通常设置为 1500,Overlay 网络内 MTU 设置为 1450)。
- 硬件卸载: 选择支持 VXLAN 或 Geneve 硬件卸载的网卡(如 Mellanox ConnectX-5 及以上),可将封装/解封装操作卸载到网卡,显著降低 CPU 负载。
- eBPF 直通: Cilium 的 eBPF 数据路径在 XDP 层即可完成策略决策和转发,避免进入内核协议栈的复杂路径,延迟可低至微秒级。
- Identity 缓存: 大规模集群中,Cilium 使用高效的 BPF Map 缓存 Identity 与策略映射关系,确保策略查找性能不随租户数量增加而下降。
生产环境建议: 对于超大规模多租户集群(>1000 节点),推荐使用 Cilium 的“原生路由 + Geneve”组合模式。原生路由提供最优性能,Geneve 用于携带租户元数据,配合 eBPF 实现无锁策略执行。