1.1 多租户概念与集群架构概述
1.1.1 多租户的定义
多租户(Multi-Tenancy)是一种软件架构模式,指单个软件实例能够为多个独立的用户群体(租户)提供服务,同时确保各租户之间的数据、配置、性能与安全相互隔离。在 Kubernetes 语境下,租户可以是一个团队、一个项目、一个业务线或一个外部客户。
核心特征:
- 共享基础设施:多个租户运行在同一集群的节点、网络与存储之上。
- 逻辑隔离:通过命名空间、RBAC、NetworkPolicy 等机制实现资源与安全边界。
- 租户自治:每个租户拥有独立的资源配额、权限策略与网络策略。
1.1.2 Kubernetes 集群中的租户模型
Kubernetes 原生并未提供“租户”这一抽象概念,但业界通常基于 Namespace 作为最小隔离单元,构建以下三种主流租户模型:
| 模型 | 隔离粒度 | 适用场景 | 典型挑战 |
|---|---|---|---|
| 命名空间级租户 | 每个租户独占一个或多个 Namespace | 内部团队、微服务环境 | 跨命名空间网络策略管理 |
| 虚拟集群级租户 | 通过 vCluster / 虚拟控制面隔离 | 多部门共享集群、SaaS 平台 | 控制面资源开销、API 兼容性 |
| 物理集群级租户 | 每个租户独占一个独立集群 | 金融、合规要求极高的场景 | 运维成本高、资源碎片化 |
实践建议: 大多数企业选择“命名空间级租户 + NetworkPolicy”作为起点,在隔离性与运维复杂度之间取得平衡。当租户数量超过 50 个或存在强合规需求时,再考虑升级为虚拟集群模型。
1.1.3 多租户隔离的挑战与目标
核心挑战
- 网络边界模糊:默认情况下,Kubernetes 集群内所有 Pod 可以互相通信,缺乏租户间的网络隔离。
- 资源争抢:共享节点上的 CPU、内存、网络带宽可能被某个租户的异常工作负载耗尽。
- 权限越界:RBAC 配置不当可能导致租户 A 的 ServiceAccount 能够读取租户 B 的 Secret。
- 审计与合规:多租户环境下,需要为每个租户保留独立的操作审计日志与资源变更记录。
- 运维复杂度:随着租户数量增长,策略管理、监控告警、故障排查的难度呈指数级上升。
隔离目标
| 隔离维度 | 目标描述 | Kubernetes 实现手段 |
|---|---|---|
| 网络隔离 | 租户间禁止非授权流量,租户内允许正常通信 | NetworkPolicy、CiliumNetworkPolicy |
| 计算隔离 | 防止租户 A 的 Pod 抢占租户 B 的资源 | ResourceQuota、LimitRange、PriorityClass |
| 身份隔离 | 租户只能操作自己命名空间内的资源 | RBAC、ServiceAccount、OIDC |
| 数据隔离 | 租户的 ConfigMap、Secret、PVC 不可互访 | Namespace + RBAC + 存储类隔离 |
| 审计隔离 | 每个租户的操作日志可独立追溯 | Kubernetes Audit Log + 租户标签 |
常见误区: 仅靠 Namespace 无法实现网络隔离。默认情况下,不同 Namespace 的 Pod 仍然可以通过 Pod IP 直接通信。必须显式创建 NetworkPolicy 才能阻断跨租户流量。
1.1.4 多租户集群架构参考图
下图展示了一个典型的多租户 Kubernetes 集群架构,包含三个租户(Team-A、Team-B、Team-C),每个租户拥有独立的 Namespace、RBAC 角色与 NetworkPolicy 边界。
1.1.5 隔离策略决策流程
在实际项目中,选择何种隔离策略通常遵循以下决策流程: