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 多租户隔离的挑战与目标

核心挑战

  1. 网络边界模糊:默认情况下,Kubernetes 集群内所有 Pod 可以互相通信,缺乏租户间的网络隔离。
  2. 资源争抢:共享节点上的 CPU、内存、网络带宽可能被某个租户的异常工作负载耗尽。
  3. 权限越界:RBAC 配置不当可能导致租户 A 的 ServiceAccount 能够读取租户 B 的 Secret。
  4. 审计与合规:多租户环境下,需要为每个租户保留独立的操作审计日志与资源变更记录。
  5. 运维复杂度:随着租户数量增长,策略管理、监控告警、故障排查的难度呈指数级上升。

隔离目标

隔离维度 目标描述 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 边界。

多租户 Kubernetes 集群架构 Kubernetes 集群 控制面 (Control Plane) 租户 A (Team-A) Namespace: team-a Pod Pod NetworkPolicy: 隔离 租户 B (Team-B) Namespace: team-b Pod Pod NetworkPolicy: 隔离 租户 C (Team-C) Namespace: team-c Pod Pod NetworkPolicy: 隔离 共享基础设施服务 Ingress Controller · 监控 (Prometheus) · 日志 (Loki) 图例: 租户 Namespace 工作负载 Pod NetworkPolicy 共享服务 控制面通信 服务依赖

1.1.5 隔离策略决策流程

在实际项目中,选择何种隔离策略通常遵循以下决策流程:

多租户隔离策略决策流程 评估租户需求 是否需要强合规隔离? 是 物理集群隔离 否 租户数量 > 50? 是 虚拟集群隔离 否 命名空间 + NetworkPolicy