4. 多云Kubernetes命名空间与租户治理
在多云Kubernetes平台中,命名空间不只是资源分组工具,更是租户治理的基本边界。一个平台往往同时承载几十个业务团队、数百个命名空间,分布在多个集群甚至多个云厂商上。如果没有清晰的租户模型和治理机制,集群会迅速退化为“谁都能建命名空间、谁都能改配额、谁都不知道资源被谁占用”的混乱状态。本节围绕租户模型、命名空间即服务、配额、限制范围、网络隔离以及租户自助与审批流六个核心机制,说明如何把命名空间从“技术对象”升级为“可运营的租户单元”。
一、租户模型:先定义“谁在用平台”
租户模型决定了平台如何组织用户、团队与资源的关系。常见的租户模型有三种:团队即租户、项目即租户和环境即租户。团队即租户适合组织架构稳定的企业,一个团队拥有一个或多个命名空间;项目即租户适合以产品线为中心的组织,每个项目独立申请资源;环境即租户则把开发、测试、生产拆成不同租户,强调环境隔离。
在多云场景下,租户模型还需要增加“集群归属”维度。例如某租户在阿里云ACK和腾讯云TKE各有一个命名空间,这两个命名空间逻辑上属于同一租户,但物理上分布在不同集群。因此租户标识应设计为tenant-id,命名空间命名建议采用{tenant-id}-{env}-{app}格式,例如payment-prod-order。这样既能保证全局唯一,又能在监控、审计和成本分摊时按租户聚合。
二、命名空间即服务:从手工创建到自助申请
命名空间即服务(Namespace as a Service)的核心思想是:租户不直接调用kubectl create namespace,而是通过平台提供的申请入口提交命名空间需求,由平台自动完成创建、标签注入、配额绑定、网络策略配置和RBAC授权。这样做的价值在于把“创建命名空间”这个动作标准化,避免遗漏关键治理配置。
一个典型的命名空间申请单应包含以下字段:租户ID、目标集群、命名空间名称、环境类型、资源配额(CPU/内存/Pod数)、是否需要公网入口、网络隔离级别、负责人和审批人。平台收到申请后,按审批流决定是否放行,放行后由控制器自动执行创建流程。
三、配额与限制范围:把资源约束落到命名空间
ResourceQuota 和 LimitRange 是命名空间治理的两把“锁”。ResourceQuota 约束整个命名空间的资源总量,例如requests.cpu: "20"、requests.memory: 40Gi、pods: "100";LimitRange 则约束单个 Pod 或容器的默认值和上下限,例如默认请求cpu: 200m、默认限制cpu: 1、最大限制cpu: 4。
两者配合使用才能避免“配额被单个 Pod 吃光”或“Pod 不写 requests 导致调度失真”。在多云环境中,不同集群的节点规格不同,配额模板应按集群维度差异化配置。例如生产集群单命名空间 CPU 配额可设为 40 核,测试集群设为 10 核。配额不是越大越好,而是要与租户实际业务量、集群容量水位和成本预算匹配。
四、网络隔离:默认拒绝,按需放行
命名空间之间的网络隔离依赖 NetworkPolicy。推荐策略是“默认拒绝所有入站,再按租户和业务关系放行”。例如payment-prod命名空间只允许同租户的payment-prod和平台监控命名空间访问,其他一律拒绝。如果集群 CNI 不支持 NetworkPolicy,则需要通过服务网格或云厂商安全组补充。
跨集群通信是另一个难点。多云场景下,租户的命名空间可能分布在多个集群,跨集群调用需要经过网关或服务网格。此时网络策略不仅要考虑集群内命名空间隔离,还要考虑集群间的东西向流量授权。建议为每个租户分配独立的网络域标识,并在网关层做租户级限流和鉴权。
五、租户自助与审批流:平衡效率与管控
租户自助的目标是让租户在授权范围内自主操作,例如查看配额使用率、申请扩容、创建ConfigMap和Secret、部署无状态应用。审批流则用于控制高风险操作,例如新建命名空间、提升配额、开放公网入口、绑定集群级角色。
一个可落地的审批流可以设计为三级:租户管理员初审(确认业务合理性)、平台管理员复审(确认资源容量与安全合规)、自动执行(控制器创建资源并回执)。审批结果应记录在审计日志中,包含申请人、审批人、时间、变更内容和目标集群。对于低风险操作,如租户内部扩容不超过原配额20%,可以走自动审批,减少人工介入。
六、治理效果如何观察
命名空间治理是否有效,可以通过几个指标判断:命名空间创建是否全部经过审批流、配额使用率是否长期低于80%、是否存在未绑定NetworkPolicy的命名空间、租户越权操作是否被RBAC拦截、跨集群命名空间标签是否一致。平台应提供租户视角的资源看板,让租户看到自己每个命名空间的CPU、内存、Pod数量和网络策略状态,同时让平台管理员看到全局容量水位和租户排名。
归根结底,多云Kubernetes命名空间与租户治理不是一次性配置,而是一套持续运营机制。租户模型定义边界,命名空间即服务提供入口,配额和限制范围控制资源,网络隔离保障安全,自助与审批流平衡效率与管控。只有把这些机制组合起来,命名空间才能真正成为可管理、可审计、可扩展的租户单元。