2. 核心概念:租户隔离的定义、多租户模型(SaaS/PaaS)、隔离边界(网络/存储/计算)

2.1 租户隔离的定义

租户隔离(Tenant Isolation)是指在共享基础设施(计算、网络、存储)上,为不同租户(Tenant)提供逻辑或物理上完全独立的运行环境,确保一个租户的操作、数据、流量不会影响或泄露给其他租户。在集群升级场景下,隔离边界一旦被破坏,可能导致租户 A 的 Pod 被调度到租户 B 的节点、网络策略失效、存储卷挂载错乱等严重故障。

核心目标: 在共享资源池中实现“安全多租户”(Secure Multi-Tenancy),使每个租户感知不到其他租户的存在,同时保证资源利用率和运维效率。

2.2 多租户模型:SaaS vs. PaaS

不同平台形态对隔离的粒度、层级和实现方式有显著差异。下表对比了 SaaS 和 PaaS 两种典型多租户模型的关键特征:

维度 SaaS 多租户模型 PaaS 多租户模型
隔离粒度 应用实例 / 用户组织 项目 / 命名空间 / 集群
租户感知 应用层显式感知租户 ID 平台层通过元数据(Label/Annotation)隐式感知
资源分配 按租户配额(Quota)分配 按命名空间(Namespace)分配 ResourceQuota
网络隔离 应用层 / Session 隔离 NetworkPolicy + CNI 插件(如 Calico)
存储隔离 应用层数据分区 / Schema 隔离 PV/PVC 绑定 + StorageClass 限制
升级影响范围 应用滚动升级,租户无感 集群升级可能导致 Namespace 级服务中断
典型场景 CRM、ERP、企业办公套件 Kubernetes 集群、容器平台、中间件服务
升级测试启示: 在集群升级场景下,PaaS 模型的隔离边界更依赖基础设施层(CNI、CSI、调度器)的正确性,升级过程中必须验证这些组件的隔离策略是否被重置或破坏。

2.3 隔离边界:网络 / 存储 / 计算

隔离边界是租户隔离的具体实现层。在 Kubernetes 集群中,三个核心边界分别对应不同的资源对象和策略:

  • 网络隔离边界: 通过 NetworkPolicy 定义 Pod 之间的通信规则,结合 CNI 插件(Calico、Cilium)实现租户级网络隔离。升级时需验证 NetworkPolicy 规则是否被保留、CNI 组件是否兼容新版本。
  • 存储隔离边界: 通过 PV/PVC 绑定机制确保一个租户的存储卷不能被其他租户访问。StorageClass 的 ReclaimPolicy、AccessModes 以及 CSI 驱动版本升级都可能影响隔离性。
  • 计算隔离边界: 通过 ResourceQuota、LimitRange、Pod Priority/Preemption 以及节点亲和性(NodeAffinity)实现 CPU/内存资源的公平分配和硬隔离。升级后调度器行为变化可能导致资源争抢。

下图展示了集群升级前后三个隔离边界的验证要点:

集群升级下租户隔离边界验证架构 升级前隔离状态 网络隔离 NetworkPolicy 生效 CNI 版本 v1.0 存储隔离 PV/PVC 绑定正确 CSI 驱动 v2.0 计算隔离 ResourceQuota 生效 调度策略正常 集群升级 升级后隔离验证 网络隔离验证 规则是否保留? CNI 兼容性? 存储隔离验证 PV 访问权限? CSI 驱动升级? 计算隔离验证 Quota 是否重置? 调度策略变化? 验证要点 1. 网络策略 规则完整性 2. 存储卷 挂载正确性 3. 资源配额 未丢失 4. 跨租户 访问阻断 5. 审计日志 可追溯

2.4 隔离边界的测试验证清单

在集群升级测试中,针对三个隔离边界,需要逐项验证以下关键指标:

隔离边界 验证项 预期结果 失败影响
网络 NetworkPolicy 规则完整性 升级后规则数量、内容与升级前一致 租户间非授权访问
CNI 插件版本兼容性 Pod 网络连通性正常,无丢包 集群网络瘫痪
跨 Namespace 访问阻断 未授权流量被拒绝 数据泄露
存储 PV/PVC 绑定关系 升级后 PVC 仍绑定原 PV 数据丢失或挂载失败
CSI 驱动版本 驱动与集群版本兼容 存储卷无法创建/挂载
存储卷访问权限 跨租户无法访问对方卷 数据越权
计算 ResourceQuota 保留 升级后 Quota 值不变 资源超卖或饥饿
Pod 调度策略 NodeAffinity/Taint 仍生效 Pod 调度到错误节点
LimitRange 约束 Pod 资源限制未丢失 单个 Pod 耗尽节点资源
升级风险提示: 在集群升级过程中,kube-controller-manager、kube-scheduler 等核心组件的配置可能被覆盖或重置,导致 ResourceQuota、LimitRange 等隔离策略失效。务必在升级前备份所有隔离策略配置,并在升级后执行自动化回归验证。

2.5 隔离模型在升级测试中的映射关系

为了在测试中精确验证隔离边界,需要将概念模型映射为可执行的测试用例。下表展示了从“隔离定义”到“测试断言”的转换关系:

隔离概念 Kubernetes 对象 测试方法 通过标准
网络隔离 NetworkPolicy 创建测试 Pod,执行 curl 跨 Namespace 访问 未授权请求返回超时或拒绝
存储隔离 PersistentVolumeClaim 尝试从租户 B 的 Pod 挂载租户 A 的 PVC 挂载失败或权限错误
计算隔离 ResourceQuota 在租户内创建超过 Quota 的 Pod 调度失败,返回 Quota 错误
测试设计原则: 每个隔离边界至少设计一个“正向用例”(验证隔离生效)和一个“负向用例”(验证越权被拒绝)。升级后,负向用例的失败即代表隔离边界被破坏。