2. 多租户网络基础:多租户架构定义、网络隔离技术对比
2.1 多租户架构定义与核心挑战
多租户(Multi-Tenancy)是一种软件架构模式,其中单个软件实例(或集群)服务于多个独立的用户群体(即“租户”)。在云原生与网络场景下,每个租户通常对应一个客户、一个业务部门或一个项目组,拥有独立的网络策略、资源配额与数据视图。
核心特征:
- 隔离性(Isolation): 租户间的流量、配置与故障域必须严格隔离,防止“吵闹邻居”效应。
- 可扩展性(Scalability): 网络架构应支持从数十到数万个租户的线性扩展。
- 资源配额(Resource Quota): 每个租户的带宽、连接数、IP 地址段等资源需可量化、可限制。
- 运维透明性(Operational Transparency): 租户应能自主管理其网络策略,而底层物理网络对租户透明。
多租户网络面临的核心瓶颈在于:隔离粒度与转发性能之间的平衡。传统的 VLAN 隔离简单但扩展性差;VxLAN 扩展性强但引入封装开销;网络策略(Network Policy)灵活但依赖控制器与代理。下表从关键维度对比三种主流隔离技术。
2.2 网络隔离技术对比:VLAN vs VxLAN vs 网络策略
| 对比维度 | VLAN (802.1Q) | VxLAN (RFC 7348) | 网络策略 (Network Policy) |
|---|---|---|---|
| 隔离粒度 | 二层广播域(子网) | 二层广播域(虚拟网络) | 三层/四层(IP + 端口) |
| 最大租户数 | 4094(12-bit VLAN ID) | 约 1600 万(24-bit VNI) | 无理论上限(依赖控制器) |
| 封装开销 | 4 字节(802.1Q 标签) | 50 字节(UDP + VxLAN 头部) | 无封装(纯策略匹配) |
| 跨子网/跨DC | 需三层路由 | 原生支持(Overlay over IP) | 依赖 CNI 插件实现 |
| 运维复杂度 | 低(传统交换机配置) | 中(需 VTEP 配置) | 高(需控制器与 Agent) |
| 适用场景 | 小型数据中心、物理机隔离 | 大规模虚拟化/容器集群 | Kubernetes 原生隔离 |
选型建议: 在云原生多租户环境中,通常采用“VxLAN + 网络策略”的组合方案:VxLAN 负责二层 Overlay 网络的大规模扩展,网络策略负责细粒度的东西向流量控制。VLAN 仅用于边缘或遗留系统对接。
2.3 多租户网络隔离架构图
下图展示了一个典型的多租户 Overlay 网络架构,其中两个租户(Tenant A 和 Tenant B)共享同一物理网络,但通过 VxLAN 隧道与网络策略实现完全隔离。
常见误区: 不要认为 VxLAN 能自动解决所有隔离问题。VxLAN 仅提供二层网络扩展,租户间的访问控制仍需依赖网络策略或 ACL。此外,VxLAN 的 50 字节封装头会降低 MTU,需在物理网络启用 jumbo frame(通常 1600 字节以上)以避免分片。
2.4 网络策略的细粒度隔离模型
在 Kubernetes 等容器编排平台中,NetworkPolicy 是定义租户隔离的标准 API 对象。它基于标签选择器(Label Selector)匹配 Pod,并控制入站(Ingress)与出站(Egress)流量。以下是一个典型的多租户隔离策略示例:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: tenant-a-isolation
namespace: tenant-a-ns
spec:
podSelector:
matchLabels:
tenant: a
policyTypes:
- Ingress
- Egress
ingress:
- from:
- namespaceSelector:
matchLabels:
tenant: a
ports:
- protocol: TCP
port: 80
- protocol: TCP
port: 443
egress:
- to:
- namespaceSelector:
matchLabels:
tenant: a
ports:
- protocol: TCP
port: 53
- protocol: UDP
port: 53
- to:
- ipBlock:
cidr: 0.0.0.0/0
except:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
策略设计要点:
- 默认拒绝(Default Deny): 建议为每个租户命名空间创建一条“拒绝所有入站/出站”的基线策略,再显式放行所需流量。
- 命名空间隔离: 每个租户使用独立命名空间,并通过
namespaceSelector限制跨命名空间访问。 - IP 块例外: 出站策略中通常需要放行 DNS(端口 53)和集群 API Server,同时阻止私有 IP 段以防止租户间意外通信。
2.5 隔离技术选型决策树
在实际项目中,选择哪种隔离技术取决于集群规模、运维能力和性能要求。以下决策树可辅助判断:
关键结论:
- 小规模(租户 < 100): VLAN + ACL 足够,运维简单,性能无损耗。
- 大规模(租户 > 100): 必须采用 VxLAN Overlay 解决 VLAN 数量限制,并叠加网络策略实现细粒度控制。
- 混合场景: 边缘节点或遗留系统仍可使用 VLAN,通过 VxLAN 网关桥接至 Overlay 网络。