Kubernetes多租户网络拓扑迁移与兼容验证 - 第1节
1.1 多租户隔离的定义与核心目标
多租户(Multi-Tenancy)是云原生平台将同一套 Kubernetes 集群资源安全、公平地分配给多个独立用户或业务单元(租户)的架构模式。每个租户在逻辑上拥有独立的操作空间,但共享底层物理或虚拟基础设施。
1.1.1 隔离的四个维度
| 维度 | 隔离内容 | K8s 原生手段 |
|---|---|---|
| 网络隔离 | Pod IP 可达性、端口冲突、DNS 解析范围 | NetworkPolicy、命名空间独立 Service CIDR |
| 身份与权限隔离 | 谁可以操作哪些资源 | RBAC、ServiceAccount、命名空间 |
| 资源配额隔离 | CPU、内存、存储、Pod 数量上限 | ResourceQuota、LimitRange |
| 安全边界隔离 | 容器逃逸防护、敏感数据访问 | PodSecurityPolicy / PSA、Seccomp |
关键认知:多租户隔离不是“一刀切”的物理隔离。在 K8s 中,隔离强度是一个从“软隔离”(共享网络、共享节点)到“硬隔离”(独立 VPC、独立节点池)的连续谱系。网络拓扑迁移适配的核心任务,就是在这个谱系中找到最适合业务场景的隔离粒度。
1.2 K8s 原生网络模型概述
Kubernetes 网络模型定义了三个核心通信场景,所有 CNI 插件都必须满足这些基本要求:
- Pod 间通信:任意两个 Pod 可以直接通过 IP 地址通信,无需 NAT。
- 节点与 Pod 通信:节点上的进程(kubelet、监控 agent)可以直接访问 Pod IP。
- Service 抽象:通过虚拟 IP(ClusterIP)为一组 Pod 提供稳定的访问入口,并实现负载均衡。
1.2.1 三大核心网络对象
| 对象 | 本质 | 多租户隔离中的角色 |
|---|---|---|
| Pod IP | 容器网络接口分配的虚拟 IP,Pod 重启后变化 | 租户内工作负载的直接通信地址;隔离策略的匹配源/目标 |
| Service | 基于 iptables/IPVS 的 4 层虚拟 IP + 端口转发 | 跨租户服务暴露的边界控制点;DNS 解析隔离的锚点 |
| CNI 插件 | 实现 Pod 网络创建、IP 分配、路由注入的插件层 | 决定租户网络的底层隔离技术(VXLAN / VLAN / 直接路由) |
多租户视角:Pod IP 是“身份”,Service 是“门牌”,CNI 是“道路”。迁移适配的本质,就是在不改变“身份”和“门牌”语义的前提下,重新铺设“道路”以满足新的隔离要求。
1.3 CNI 插件与多租户网络隔离的关系
CNI(Container Network Interface)是 K8s 网络的可插拔标准。不同的 CNI 实现决定了租户网络的隔离深度和性能开销:
| CNI 类型 | 代表实现 | 隔离机制 | 多租户适用场景 |
|---|---|---|---|
| Overlay | Flannel (VXLAN)、Calico (IPIP) | 封装隧道,Pod IP 与节点网络分离 | 软隔离,适合租户间无强安全要求的开发/测试环境 |
| 路由 | Calico (BGP)、Cilium (eBPF) | 直接路由,Pod IP 通过 BGP 广播到物理网络 | 硬隔离,适合生产环境,可配合 NetworkPolicy 实现租户级微隔离 |
| 多网络平面 | Multus + Macvlan / SR-IOV | 每个 Pod 附加多个网络接口,不同租户绑定不同网络平面 | 强隔离,适合金融、运营商等需要物理级网络隔离的场景 |
迁移适配陷阱:从 Overlay 切换到路由 CNI 时,Pod IP 段可能暴露在底层网络,原有基于隧道封装的“天然隔离”会消失。此时必须显式配置 NetworkPolicy 或租户级 ACL 来补偿隔离强度。
1.4 多租户网络隔离的参考架构
下图展示了一个典型的两租户隔离网络拓扑,包含控制面、数据面和策略面的关键组件:
1.5 多租户网络隔离的关键设计原则
- 命名空间即租户边界:每个租户独占一个或多个命名空间,所有网络策略、RBAC、配额都绑定到命名空间级别。
- 默认拒绝所有跨租户流量:通过全局 NetworkPolicy 或 CNI 的租户级隔离策略,确保新创建的租户默认不可见其他租户。
- Service 暴露需显式授权:跨租户访问 Service 必须通过明确的 NetworkPolicy 规则或服务网格(如 Istio)的授权策略。
- Pod CIDR 可规划但不可依赖:Pod IP 段在集群层面统一分配,租户不应硬编码对端 Pod IP,应始终通过 Service 名称或 DNS 进行服务发现。