1. 多租户概念与隔离需求

1.1 多租户的定义

多租户(Multi-Tenancy)是一种软件架构模式,指单个软件实例或集群基础设施同时为多个独立用户群体(租户)提供服务,且每个租户在逻辑上彼此隔离。在云原生与 Kubernetes 语境下,多租户意味着多个团队、项目或客户共享同一套 Kubernetes 集群,但各自拥有独立的资源配额、访问权限、网络策略和存储空间。

核心特征: 共享基础设施 + 逻辑隔离 + 租户自治。

1.2 为什么需要隔离

缺乏隔离的多租户环境会引发以下风险,直接威胁集群稳定性与数据安全:

  • 资源争抢(Noisy Neighbor): 一个租户的突发负载耗尽 CPU/内存,导致其他租户应用响应变慢甚至 OOMKill。
  • 安全穿透: 恶意租户利用容器逃逸或 RBAC 配置漏洞,访问其他租户的敏感数据。
  • 网络干扰: 租户间未隔离的 Pod 可能通过 IP 扫描、ARP 欺骗等方式相互攻击。
  • 运维混乱: 租户 A 误删 Namespace 导致租户 B 的服务中断;日志、监控指标混杂无法区分归属。
  • 合规失效: 金融、医疗等场景要求租户数据物理或逻辑隔离,否则违反 GDPR、HIPAA 等法规。
关键认知: 隔离不是“一刀切”的完全独立部署,而是在共享效率与安全边界之间寻找平衡。过度隔离会丧失多租户的资源复用优势,隔离不足则引入不可控风险。

1.3 隔离的四个核心维度

Kubernetes 多租户隔离需要从计算、网络、存储、身份四个维度分别设计策略。下表总结了每个维度的隔离目标与常用技术手段:

维度 隔离目标 Kubernetes 原生机制 进阶/生态工具
计算 防止租户间资源争抢,保障 QoS ResourceQuota、LimitRange、PriorityClass Volcano、Yunikorn(调度隔离)
网络 禁止租户间非授权通信,防止网络攻击 NetworkPolicy、Service 隔离 Calico、Cilium(网络策略 + 加密)
存储 确保租户数据不被其他租户读取或篡改 PVC 命名空间隔离、StorageClass 限制 CSI 卷加密、Velero(备份隔离)
身份 控制租户对集群资源的访问权限 RBAC、ServiceAccount、Namespace OIDC、Kyverno(策略引擎)

1.4 隔离维度关系图

下图展示了四个隔离维度在 Kubernetes 集群中的协同关系:计算与存储提供资源边界,网络控制通信路径,身份定义访问主体。四者共同构成多租户隔离的完整防线。

Kubernetes 多租户隔离四维模型 租户(Tenant) 计算隔离 网络隔离 存储隔离 身份隔离 四个维度缺一不可:计算防争抢 · 网络防渗透 · 存储防泄露 · 身份防越权

1.5 隔离策略选择矩阵

实际项目中,不同租户类型对隔离强度的需求差异很大。以下矩阵帮助架构师根据租户特征选择隔离级别:

租户类型 计算隔离 网络隔离 存储隔离 身份隔离 推荐模式
内部开发团队 ResourceQuota 默认拒绝 + 白名单 PVC 命名空间隔离 RBAC + 组 软多租户(Namespace)
测试/预发环境 LimitRange + 优先级 NetworkPolicy 严格 StorageClass 限制 ServiceAccount 绑定 软多租户 + 策略增强
外部客户(SaaS) 节点/内核级隔离 CNI 加密隧道 CSI 卷加密 OIDC + 审计 硬多租户(虚拟集群)
金融/合规场景 专用节点池 + 内核隔离 完全隔离 + 审计日志 加密 + 独立存储后端 多因素 + 细粒度 RBAC 物理/虚拟集群隔离
架构建议: 从“软多租户”起步(基于 Namespace + RBAC + ResourceQuota),随着安全需求升级逐步引入 NetworkPolicy、加密存储、节点隔离等硬隔离手段。避免一开始就过度设计,导致运维复杂度失控。