3. 多租户隔离模型总览:软隔离 vs 硬隔离、共享集群 vs 专用集群、隔离层级

多租户隔离是 Kubernetes 集群架构设计的核心挑战。不同的隔离模型决定了租户之间的信任边界、资源保障程度以及运维复杂度。本章从三个维度系统梳理隔离模型:隔离强度(软隔离 vs 硬隔离)、集群归属(共享集群 vs 专用集群)、隔离层级(网络/计算/存储/身份)。

3.1 软隔离(Namespace-based) vs 硬隔离(Cluster-based)

隔离强度是选择多租户方案的首要决策点。Kubernetes 原生提供基于 Namespace 的逻辑隔离(软隔离),而硬隔离则需要通过独立集群或虚拟化节点实现。

对比维度 软隔离(Namespace-based) 硬隔离(Cluster-based)
隔离边界 API 对象级别(RBAC + NetworkPolicy) 物理/虚拟集群边界
安全强度 共享同一控制平面,存在逃逸风险 独立控制平面,强安全边界
资源保障 依赖 ResourceQuota / LimitRange 独立节点池或整机隔离
运维成本 低,单集群统一管理 高,多集群生命周期管理
适用场景 内部团队、开发/测试环境 金融级合规、外部客户、敏感数据
选型建议: 大多数企业从软隔离起步,当出现合规审计要求、租户间性能干扰严重或安全事件后,再逐步迁移至硬隔离方案。混合模式(软隔离 + 节点级硬隔离)是折中方案。

3.2 共享集群 vs 专用集群

集群归属模型决定了资源池的共享程度。共享集群强调资源利用率,专用集群强调隔离性和可预测性。

  • 共享集群(Shared Cluster): 多个租户共用同一集群的控制平面和工作节点。通过 Namespace、RBAC、NetworkPolicy 实现逻辑隔离。资源利用率高,但存在“吵闹邻居”问题和控制平面爆炸半径风险。
  • 专用集群(Dedicated Cluster): 每个租户拥有独立的 Kubernetes 集群。控制平面和数据平面完全隔离,安全性和性能可预测性最强。但集群数量随租户线性增长,运维复杂度急剧上升。
  • 分区共享集群(Partitioned Shared Cluster): 共享控制平面,但租户绑定到专用节点池(Node Pool)。通过节点亲和性、Taint/Toleration 实现计算资源硬隔离,网络和存储仍可共享。这是软硬隔离的折中方案。
关键指标对比:
模型 资源利用率 隔离强度 运维复杂度 租户规模上限
共享集群 高(80-90%) 低 低 100-200 Namespaces
分区共享集群 中(60-75%) 中 中 50-100 节点池
专用集群 低(30-50%) 高 高 取决于集群管理能力
多租户隔离模型决策树 隔离需求评估 软隔离(Namespace) 硬隔离(Cluster) 共享集群 分区共享集群 专用集群 虚拟集群 决策要点: • 合规要求 → 硬隔离(专用集群或虚拟集群) • 资源利用率优先 → 软隔离(共享集群) • 折中方案 → 分区共享集群(共享控制面 + 专用节点池)

3.3 隔离层级:网络 / 计算 / 存储 / 身份

多租户隔离需要在四个核心层级分别实施策略。每个层级的隔离机制和强度不同,需要组合使用才能构建完整的隔离防线。

3.3.1 网络隔离

  • NetworkPolicy: Kubernetes 原生网络隔离,基于标签选择器控制 Pod 间流量。支持入站(Ingress)和出站(Egress)规则。
  • CNI 插件级隔离: Calico、Cilium 等 CNI 插件提供更细粒度的网络策略,支持基于身份(ServiceAccount)的隔离、DNS 策略、L7 策略。
  • Service Mesh 隔离: Istio/Linkerd 通过 Sidecar 代理实现应用层流量管控,支持 mTLS 加密和细粒度鉴权。
  • 节点级网络隔离: 通过 VPC 子网、安全组、节点网络策略实现跨租户网络硬隔离。

3.3.2 计算隔离

  • ResourceQuota: 限制 Namespace 级别的 CPU/内存总量,防止单个租户耗尽集群资源。
  • LimitRange: 设置 Pod 和容器的默认资源请求/限制,避免未设置资源限制的 Pod 影响其他租户。
  • 节点亲和性与 Taint/Toleration: 将租户工作负载绑定到特定节点池,实现计算资源物理隔离。
  • RuntimeClass: 通过 gVisor、Kata Containers 等沙箱运行时提供虚拟机级别的安全隔离。

3.3.3 存储隔离

  • PVC 命名空间隔离: PersistentVolumeClaim 是命名空间级别的资源,默认只能被同 Namespace 的 Pod 访问。
  • StorageClass 限制: 通过 StorageClass 的 allowedTopologies 和 mountOptions 控制存储访问范围。
  • CSI 卷级加密: 使用 CSI 驱动提供的卷加密功能,确保不同租户的数据在存储后端不可互读。
  • NFS/共享存储隔离: 通过子目录权限、导出策略(export policy)实现租户间存储路径隔离。

3.3.4 身份隔离

  • RBAC: 基于 Role/ClusterRole 和 RoleBinding/ClusterRoleBinding 控制用户或 ServiceAccount 对 API 资源的访问权限。
  • ServiceAccount 隔离: 每个租户使用独立的 ServiceAccount,配合 Pod 安全策略(PSA/PSS)限制 Pod 行为。
  • OIDC 与联邦身份: 集成企业 IdP(如 LDAP、Okta),通过用户组映射到 Kubernetes RBAC 角色。
  • 审计日志隔离: 确保审计日志按租户维度归档,满足合规审计要求。
多租户四层隔离架构 网络隔离层 NetworkPolicy | CNI 策略 | Service Mesh mTLS | 节点安全组 计算隔离层 ResourceQuota | LimitRange | 节点亲和性 | RuntimeClass 沙箱 存储隔离层 PVC 命名空间隔离 | StorageClass 限制 | CSI 加密 | 路径权限 身份隔离层 RBAC | ServiceAccount | OIDC 联邦 | 审计日志归档 L4 L3 L2 L1
常见误区: 仅依赖 NetworkPolicy 就认为实现了完整隔离。实际上,网络隔离只是第一道防线。如果计算资源配额未设置,一个租户的突发流量仍可能影响其他租户;如果身份隔离不完善,逃逸的 Pod 可能通过 RBAC 漏洞访问其他租户的数据。四层隔离必须协同配置,缺一不可。

3.4 隔离模型组合策略

实际生产环境中,通常根据租户信任等级和业务需求组合使用上述隔离模型。以下是一个典型的分级隔离策略示例:

租户等级 集群模型 隔离强度 网络 计算 存储 身份
内部开发团队 共享集群 软隔离 NetworkPolicy ResourceQuota PVC 隔离 RBAC
内部业务线 分区共享集群 中隔离 NetworkPolicy + 节点安全组 节点池绑定 + LimitRange StorageClass 限制 RBAC + ServiceAccount
外部客户(SaaS) 专用集群 硬隔离 VPC 隔离 + mTLS 独立节点池 + RuntimeClass CSI 加密卷 OIDC 联邦 + 审计
金融合规租户 专用集群 + 物理机 最强隔离 物理网络隔离 裸金属节点 硬件加密存储 多因子认证 + 审计
实践要点:
  • 从共享集群 + 软隔离起步,随着租户数量增长和合规要求提升,逐步引入分区共享和专用集群。
  • 网络隔离是基础,计算隔离是保障,存储隔离是底线,身份隔离是入口。四层缺一不可。
  • 使用自动化策略引擎(如 OPA/Gatekeeper)确保隔离策略的强制实施和一致性。
  • 定期进行隔离有效性测试,包括渗透测试和租户间访问验证。