3、多租户模型:SaaS vs PaaS vs 内部平台,租户隔离的三种粒度(集群、命名空间、账户)

多租户(Multi-Tenancy)是平台工程中隔离策略的核心。不同平台形态(SaaS、PaaS、内部平台)对租户的定义和隔离要求截然不同。本章从平台类型出发,剖析三种主流隔离粒度:集群级、命名空间级和账户级,并给出选型建议。

3.1 三种平台形态的租户模型对比

在开始讨论隔离粒度之前,需要先明确平台形态决定了“谁是租户”。下表总结了 SaaS、PaaS 和内部平台在租户定义、控制面和数据面归属上的关键差异:

维度 SaaS 平台 PaaS 平台 内部平台(IDP)
典型租户 外部客户(企业/个人) 外部开发者/应用团队 内部业务线/产品团队
控制面归属 平台提供商完全管控 平台提供商管控,租户有部分自服务 平台工程团队管控,租户高度自治
数据面隔离要求 严格隔离(合规/数据安全) 中等隔离(性能干扰控制) 灵活隔离(成本与效率平衡)
网络策略复杂度 高(跨 VPC/专线) 中(CNI 网络策略) 中低(扁平化或服务网格)
典型隔离粒度 集群级 / 账户级 命名空间级 / 集群级 命名空间级 / 账户级
关键认知: 内部平台(IDP)的租户通常是“内部团队”,隔离策略更注重资源配额和网络策略的灵活性,而非物理级安全边界。SaaS 平台则必须考虑数据合规和租户间零信任。

3.2 三种隔离粒度详解

无论平台形态如何,Kubernetes 生态下的租户隔离最终落地到三种粒度:集群(Cluster)、命名空间(Namespace)和账户(Account/Project)。下面逐一分析其适用场景、优缺点和网络拓扑特征。

3.2.1 集群级隔离

每个租户独占一个 Kubernetes 集群。这是最彻底的隔离方式,租户之间没有共享控制面或数据面。

  • 适用场景:SaaS 平台的高合规客户、金融级数据隔离、需要独立 Kubernetes 版本或节点配置的租户。
  • 网络拓扑:每个集群拥有独立的 VPC/子网、独立 CNI 插件、独立 API Server。租户间网络完全不通,通过外部网关或专线互联。
  • 优点:故障域完全隔离;租户可自定义集群级组件(如 Ingress Controller、监控栈)。
  • 缺点:资源碎片化严重;管理成本高(升级、监控、备份成倍增加);跨集群服务调用延迟增加。

3.2.2 命名空间级隔离

多个租户共享同一个集群,通过 Kubernetes Namespace 进行逻辑隔离。这是 PaaS 和内部平台最常用的模式。

  • 适用场景:内部开发环境、PaaS 平台的多租户应用托管、IDP 中不同产品线的资源划分。
  • 网络拓扑:所有 Pod 在同一集群内,通过 NetworkPolicy 控制东西向流量。通常配合服务网格(如 Istio)实现租户间 mTLS 和细粒度鉴权。
  • 优点:资源利用率高;管理成本低;服务间调用延迟低(同集群通信)。
  • 缺点:控制面共享(API Server 成为潜在瓶颈);租户间“吵闹邻居”问题(CPU/内存争抢);NetworkPolicy 规则数量随租户增长呈指数级上升。

3.2.3 账户级隔离

账户级隔离通常指云厂商的 Project/Account 概念(如 AWS Account、GCP Project、阿里云主账号),每个账户下可以包含一个或多个集群。在 IDP 场景中,账户级隔离也指“租户工作空间(Workspace)”。

  • 适用场景:大型 SaaS 平台的多区域部署、IDP 中需要独立计费和审计的部门、跨云或多集群联邦场景。
  • 网络拓扑:每个账户拥有独立的网络边界(如 VPC 对等、Transit Gateway)。账户间通过云厂商 IAM 和网络 ACL 实现隔离。账户内部可以再使用命名空间做二次划分。
  • 优点:天然支持资源配额和账单拆分;IAM 权限模型成熟;适合多集群联邦管理。
  • 缺点:跨账户服务调用需要额外的网络配置(如 PrivateLink 或 VPN);账户创建和回收流程较重;不适合小团队快速迭代。

3.3 隔离粒度选型矩阵

下表从 6 个关键维度对比三种粒度,帮助你在设计 IDP 网络拓扑时做出决策:

评估维度 集群级 命名空间级 账户级
隔离强度 ★★★★★(物理级) ★★★☆☆(逻辑级) ★★★★☆(网络级)
资源利用率 低(碎片化) 高(共享调度) 中(账户间碎片)
运维复杂度 高(多集群管理) 低(单集群运维) 中(账户生命周期)
网络延迟 中(跨集群调用) 低(同集群通信) 中(跨账户转发)
安全合规 满足最高合规 依赖 NetworkPolicy 满足中等合规
成本(管理+资源) 高 低 中
实践建议: 内部平台(IDP)优先选择“命名空间级 + 账户级”混合模式。默认使用命名空间隔离开发/测试环境,对核心生产租户或合规敏感租户单独分配账户。避免一开始就采用全集群级隔离,除非有明确的合规或性能隔离硬性要求。

3.4 三种粒度的网络拓扑对比图

下图从网络视角展示三种隔离粒度的核心差异,包括控制面、数据面和东西向流量的路径:

三种隔离粒度网络拓扑对比 三种隔离粒度网络拓扑对比 集群级隔离 租户A 集群 API Server Pod-A1 Pod-A2 VPC-A 租户B 集群 API Server Pod-B1 Pod-B2 VPC-B 完全隔离 命名空间级隔离 共享集群 API Server(共享) NS-A Pod-A1 Pod-A2 NS-B Pod-B1 Pod-B2 NetworkPolicy 控制东西向流量 账户级隔离 账户A 集群A1 集群A2 VPC-A IAM-A 账户B 集群B1 集群B2 VPC-B IAM-B Transit GW / PrivateLink 选型建议 SaaS → 集群级或账户级;PaaS → 命名空间级为主;内部平台 → 命名空间级 + 账户级混合

3.5 混合隔离策略:IDP 推荐模式

在实际的 IDP 建设中,很少只使用单一隔离粒度。推荐采用分层混合策略:

  1. 第一层:账户级(租户工作空间)——每个业务线或产品组分配一个独立的云账户或 IDP 工作空间。实现资源配额、账单拆分和 IAM 权限的天然隔离。
  2. 第二层:集群级(环境划分)——在每个账户内,按环境(dev/staging/prod)创建独立集群。生产环境集群使用更强的网络隔离(如独立 VPC 和节点组)。
  3. 第三层:命名空间级(应用隔离)——在每个集群内,按应用或微服务划分命名空间。通过 NetworkPolicy 和 Istio AuthorizationPolicy 实现细粒度访问控制。
常见陷阱: 不要试图用命名空间级隔离来满足合规审计要求。如果租户需要独立的审计日志、独立的密钥管理或独立的合规认证,必须使用集群级或账户级隔离。命名空间级隔离无法阻止“集群管理员”级别的越权操作。

3.6 网络策略与隔离粒度的映射

不同的隔离粒度决定了网络策略的实现方式。下表总结了每种粒度下推荐的网络策略工具和配置模式:

隔离粒度 网络策略工具 策略作用范围 典型配置示例
集群级 VPC ACL / 安全组 / 云防火墙 集群边界(南北向) 仅允许特定源 IP 访问 API Server;禁止集群间 Pod CIDR 互通
命名空间级 Kubernetes NetworkPolicy + 服务网格(Istio) 命名空间边界(东西向) 默认拒绝所有入站流量;仅允许同命名空间内 Pod 通信;通过 Istio PeerAuthentication 启用 mTLS
账户级 云 IAM + Transit Gateway 路由表 + PrivateLink 账户边界(跨账户) 仅允许特定账户的 VPC 通过 Transit Gateway 路由;使用 PrivateLink 暴露服务

3.7 模板版本隔离与租户粒度的关系

在 IDP 中,模板版本隔离策略必须与租户粒度对齐。例如:

  • 集群级租户:每个租户使用独立的模板版本(如 Terraform 模块版本、Helm Chart 版本)。模板升级需要逐个集群灰度,回滚也独立。
  • 命名空间级租户:所有租户共享同一套模板版本,但通过参数化配置(如 values.yaml 覆盖)实现差异化。模板升级影响所有租户,需要更严格的 CI/CD 门禁。
  • 账户级租户:每个账户可以锁定模板版本(通过 GitOps 的 branch/tag 策略)。账户管理员可以自主选择升级时机。
核心结论: 租户隔离粒度越粗(集群级),模板版本管理越独立,但运维成本越高;隔离粒度越细(命名空间级),模板版本管理越集中,但风险也越集中。IDP 平台工程师需要根据组织规模和合规要求,在“独立”与“共享”之间找到平衡点。