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 插件都必须满足这些基本要求:

  1. Pod 间通信:任意两个 Pod 可以直接通过 IP 地址通信,无需 NAT。
  2. 节点与 Pod 通信:节点上的进程(kubelet、监控 agent)可以直接访问 Pod IP。
  3. 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 多租户网络隔离的参考架构

下图展示了一个典型的两租户隔离网络拓扑,包含控制面、数据面和策略面的关键组件:

多租户隔离网络参考架构 多租户隔离网络参考架构 Kubernetes 集群边界 租户 A(电商业务) Pod: frontend-v1 Pod: backend-v1 Service: frontend-svc Service: backend-svc NetworkPolicy: 仅允许 frontend → backend:8080 ResourceQuota: 4C / 8Gi / 20 Pods 租户 B(支付业务) Pod: payment-api Pod: payment-db Service: payment-svc Service: db-svc NetworkPolicy: 拒绝所有非租户 B 入站流量 ResourceQuota: 8C / 16Gi / 30 Pods 隔离边界 CNI 插件(Calico / Cilium / Flannel)负责 Pod IP 分配与路由,NetworkPolicy 实施租户间访问控制

1.5 多租户网络隔离的关键设计原则

  • 命名空间即租户边界:每个租户独占一个或多个命名空间,所有网络策略、RBAC、配额都绑定到命名空间级别。
  • 默认拒绝所有跨租户流量:通过全局 NetworkPolicy 或 CNI 的租户级隔离策略,确保新创建的租户默认不可见其他租户。
  • Service 暴露需显式授权:跨租户访问 Service 必须通过明确的 NetworkPolicy 规则或服务网格(如 Istio)的授权策略。
  • Pod CIDR 可规划但不可依赖:Pod IP 段在集群层面统一分配,租户不应硬编码对端 Pod IP,应始终通过 Service 名称或 DNS 进行服务发现。