多租户AI平台物理隔离架构:从节点到集群的演进与实践

📅 2026/8/9 2:32:21
多租户AI平台物理隔离架构:从节点到集群的演进与实践
1. 从“共享”到“隔离”多租户AI平台的必然选择最近几年AI模型训练与推理服务化Model-as-a-Service的趋势越来越明显。无论是企业内部为不同业务部门提供AI能力还是对外提供商业化AI服务一个核心的架构挑战就是如何在一个统一的平台上安全、高效、稳定地服务多个租户Tenant这里的“租户”可能是一个外部客户、一个内部团队甚至是一个独立的业务应用。大家最初的想法往往很简单——用一套强大的硬件集群跑一个统一的调度系统比如Kubernetes通过命名空间Namespace、资源配额Quota和权限控制RBAC来实现逻辑隔离。这听起来很美好成本也低但真正跑起来尤其是在涉及大模型训练、敏感数据处理或强合规要求的场景下问题就接踵而至了。我经历过一个典型的案例一个平台同时服务于公司的自动驾驶算法团队和智能客服团队。两个团队共享GPU集群。某天自动驾驶团队启动了一个长达数周的百亿参数模型预训练任务几乎吃满了所有A100的显存和NVLink带宽。与此同时客服团队的在线推理服务响应延迟从毫秒级飙升到秒级甚至出现超时直接影响了线上业务。更棘手的是自动驾驶团队在调试中意外触发了CUDA驱动的一个罕见Bug导致整个节点的GPU需要重启连带把客服团队的推理Pod也给“拖下水”了。这只是性能干扰如果涉及到模型权重、训练数据在内存或磁盘上的残留其安全风险更是不言而喻。所以“物理隔离”从一个可选项变成了很多严肃场景下的必选项。它不再是简单的“买更多机器”而是一套涉及硬件规划、网络架构、调度策略和成本模型的系统工程。今天我就结合我们平台从“纯逻辑隔离”演进到“混合隔离架构”的实践拆解一下物理隔离的几种典型方案、它们各自的适用场景以及背后那些不得不做的艰难权衡。2. 物理隔离的三种核心模式与落地形态物理隔离不是一个非黑即白的概念它是一套光谱。从成本最低、隔离性最弱的“共享集群节点亲和”到成本最高、隔离性最强的“独立物理集群”中间还有多种混合形态。理解这些模式是设计方案的第一步。2.1 节点级隔离把专属机器“划”给特定租户这是最直观也是最初级的物理隔离形式。在一个大的Kubernetes集群中我们通过标签Label和污点Taint来标记一批特定的物理节点比如一个机柜的服务器然后通过节点亲和性Node Affinity和容忍Toleration让某个租户的工作负载只调度到这批节点上。具体是怎么做的呢硬件规划与标签化首先在采购或规划时就将一批服务器例如20台8卡A100服务器定义为一个“资源池”比如pooltenant-a-gpu。在K8s中给这些节点打上对应的标签。设置污点为了避免其他租户的Pod被误调度上来给这些节点设置一个污点例如tenanta:NoSchedule。这意味着不容忍此污点的Pod无法被调度。租户配置在租户A的命名空间或其工作负载的部署Deployment定义中配置两方面容忍tolerations: - key: tenant operator: Equal value: a effect: NoSchedule节点亲和性nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: pool operator: In values: [tenant-a-gpu]它的优点很明显实现相对简单复用整个集群的网络、存储、管控平面运维成本没有显著增加。租户A的工作负载完全运行在属于自己的物理机上与其他租户在CPU、内存、GPU、本地磁盘IO和网络带宽上实现了物理隔离避免了“邻居噪音”。但缺点同样突出隔离不彻底所有节点仍然在同一个K8s控制平面管理下共享相同的网络插件如Calico、Cilium提供的Pod网络。虽然可以通过网络策略NetworkPolicy进行限制但网络层面仍存在共享和潜在干扰。共享风险如果集群的核心服务如DNS、Ingress Controller或底层网络出现故障所有租户都会受影响。资源碎片化如果租户A的资源利用率不高这批专属节点的空闲资源无法被其他租户借用导致整体资源利用率下降这是最大的成本痛点。2.2 集群级隔离为租户建立独立的“王国”当节点级隔离无法满足安全合规如金融、医疗行业的数据处理或极端性能稳定性要求时就需要为关键租户搭建完全独立的Kubernetes集群。这意味着他们拥有独占的控制平面API Server, Scheduler, Controller Manager等、独立的Etcd数据库、独立的网络CNI插件和存储供给。这种方案的落地离不开现代化的集群管理工具例如 Kubespray, Kubeadm结合自动化脚本或者更理想的使用像 Rancher, OpenShift, 或各大云厂商的托管K8s服务来快速部署和管理成百上千个独立集群。它的优势是绝对的最高级别的隔离故障域完全隔离。一个租户集群的运维失误如误删CRD、控制平面压力过大、甚至安全漏洞都不会波及其他租户。定制化自由每个租户可以独立升级K8s版本安装自己需要的运维插件如特定的监控Agent、日志收集器甚至使用不同的网络方案。清晰的成本与责任边界硬件资源、云账单、运维成本都可以清晰地核算到具体租户非常适合对外提供商业化服务。然而代价是巨大的运维复杂度指数级上升你需要管理N套集群的控制平面监控、日志、备份、升级、安全补丁等工作量乘以N。如果没有强大的平台团队和自动化工具这将是运维噩梦。资源利用率可能更低每个小集群都需要为控制平面和系统组件预留资源且跨集群的资源共享与弹性调度极为困难。跨租户资源共享与协作变难如果租户间偶尔需要共享一些基础数据或模型跨集群的访问需要额外的网关和授权机制不如在同一个集群内方便。2.3 混合隔离架构在灵活性与成本间寻找平衡点在实际生产中纯节点隔离和纯集群隔离往往都难以满足所有需求。因此混合架构成为了主流选择。其核心思想是根据租户的SLA服务等级协议、安全等级和成本预算提供不同等级的隔离套餐。一个典型的混合架构设计如下青铜套餐逻辑隔离面向内部测试、预研团队。使用共享集群仅通过Namespace、ResourceQuota和NetworkPolicy进行隔离。成本最低资源共享率高。白银套餐节点级物理隔离面向一般的内部生产团队或中小型外部客户。在共享集群中享受专属的节点池。平衡了隔离性与成本。黄金套餐独立集群面向核心生产业务、大型外部客户或受严格监管如GDPR、HIPAA的租户。提供完全独立的Kubernetes集群甚至独占物理交换机或机柜。管理混合架构的关键在于“统一管控平面”。虽然底层是多种隔离形态但租户的体验需要尽可能统一。我们通常会在上层再构建一个平台门户或集群联邦Kubernetes Federation的概念。租户通过统一的入口申请资源、部署应用、查看监控。平台后台则根据其选择的套餐自动在对应的集群或节点池中完成资源分配和应用部署。这要求平台具备强大的编排和抽象能力。3. 超越计算网络与存储的隔离深度考量当我们谈论物理隔离时目光不能只停留在计算节点CPU/GPU上。网络和存储的隔离深度往往直接决定了整体方案的安全水位。3.1 网络隔离从虚拟网络到物理网卡在节点级隔离方案中Pod网络通常还是共享的Overlay网络如VxLAN。虽然可以用NetworkPolicy做成“逻辑防火墙”但流量依然在同一条物理链路上转发。为了加强隔离可以逐步深化二级网络隔离使用支持多租户的CNI插件如Cilium为不同租户的节点池分配不同的Cluster CIDRPod网段甚至绑定到不同的虚拟网络接口上。节点网络策略在Linux节点上结合iptables或ebpf实现节点级别的网络流量控制限制跨租户节点池的直接网络访问。物理网络分区这是更彻底的方案。在数据中心内为某个黄金套餐租户的节点分配专属的TOR架顶式交换机甚至独立的汇聚交换机。其网络流量从物理上就与其他租户分离。这通常需要网络团队配合使用VLAN或VxLAN在物理网络层面进行隔离。网络隔离的一个实践难点是“东西向流量”的管理。例如租户A的一个数据预处理服务需要访问同一个租户内的模型训练服务。在混合架构下如果这两个服务被调度到同一个节点池的不同节点它们之间的流量是“东西向”的。我们需要确保这部分流量高效且安全同时严格阻断通往其他租户节点池的路径。这通常需要精细的CNI配置与网络策略。3.2 存储隔离数据残留风险的根治存储隔离的重要性不亚于计算。想象一下租户A用完一块高性能的本地NVMe SSD盘后即使Pod被删除磁盘上可能还残留着未加密的敏感训练数据。租户B的Pod随后被调度到同一节点并挂载了这块磁盘就存在数据泄露的风险。针对不同存储类型隔离策略也不同本地存储风险最高。解决方案包括使用磁盘清理工具在Pod被删除、Volume被释放后自动触发安全擦除命令如blkdiscard,shred。但这会影响磁盘寿命和调度速度。租户绑定节点将本地存储作为节点亲和性的一部分确保特定节点的本地盘只给一个租户用从根源上避免交叉。这回到了节点隔离的范畴。弃用本地存储对于敏感数据直接建议租户使用网络存储。网络存储这是更推荐的方式。主流方案是存储类StorageClass隔离为不同租户创建不同的StorageClass背后指向不同的存储后端如不同的Ceph池、NFS服务器目录或云上的专属存储卷。通过K8s的RBAC控制租户只能使用特定的StorageClass。文件系统权限即使在共享的存储后端如一个Ceph集群也可以通过为每个租户创建独立的存储池Pool或项目Project并在挂载时指定不同的用户/组ID实现访问隔离。加密为每个租户的存储卷启用静态加密At-Rest Encryption密钥由租户或平台按租户管理。即使数据被物理窃取也无法解密。在我们的实践中对于黄金套餐客户我们强制要求使用基于专属存储后端的加密存储卷。对于白银套餐则提供加密的网络存储作为默认选项并明确告知本地存储的风险。4. 核心权衡成本、效率与安全的铁三角设计多租户物理隔离方案本质上是在成本、资源利用效率、隔离安全性以及运维复杂度这个多维空间中寻找最优解。没有一个方案是完美的只有最适合当前阶段业务需求的。4.1 资源利用率与成本模型的博弈这是最直接的矛盾。物理隔离意味着资源独占必然降低整体利用率。假设你有100张GPU如果平均利用率能达到60%在完全共享的模式下你可能只需要准备100/0.6≈167张GPU的算力就能满足需求。但如果为三个主要租户实行严格的节点级隔离每个租户分配40张GPU由于各自业务波峰波谷不同他们的平均利用率可能分别只有50%、70%、40%。那么你需要准备40/0.5 40/0.7 40/0.4 80 57 100 237张GPU的算力才能满足同样的服务水平资源需求大幅增加。为了缓解这个矛盾我们引入了以下策略超售与弹性调度即使在节点隔离池内也可以实施超售Overcommit比如对CPU和内存设置超售比。同时平台可以提供一个“弹性资源池”由最低优先级的共享节点组成。当租户的专属资源池满负荷时非关键任务可以溢出Overflow调度到弹性池中运行。这需要调度器有感知优先级和成本的能力。分级资源与竞价实例借鉴公有云的模式提供不同可靠性和成本的计算资源。例如黄金套餐是独占的稳定节点白银套餐可能是“可被抢占”的专属节点在平台需要维护时可以优雅驱逐Pod而青铜套餐则完全运行在共享的竞价节点上。通过价格杠杆引导用户选择。精细化的计量与计费建立清晰的资源计量系统不仅按GPU卡时计费还要考虑网络流量、存储IOPS和容量。让租户清楚地看到独占资源的成本从而促使他们优化自身应用提高资源利用率。例如对于长时间运行的训练任务鼓励他们使用Spot实例可抢占节点以节省成本。4.2 运维复杂度的可控性设计每增加一种隔离模式运维的复杂度就增加一分。管理10个独立集群和管1个集群绝不是10倍的工作量那么简单可能是几十倍。我们的应对之道是“平台化”和“一切皆代码”统一的生命周期管理使用Terraform、Crossplane等IaC基础设施即代码工具将集群、节点池、网络策略、存储类的创建和销毁全部代码化、模板化。无论是创建一个新的独立集群还是为一个租户划分节点池都通过提交代码合并请求Merge Request来完成确保过程可重复、可审计。中心化的可观测性无论底层有多少个集群都通过统一的监控栈如Prometheus Thanos和日志收集栈如Loki Grafana进行聚合。为运维人员提供一个全局视图同时也能按租户维度进行数据切分和展示。GitOps工作流租户的应用部署通过GitOps如Argo CD来管理。平台团队维护集群的“基线配置”Base Configuration租户的配置在各自的Git仓库中。Argo CD根据租户所属的集群自动同步部署。这样运维团队只需要管理好基线配置和GitOps工具本身无需直接操作大量集群。4.3 安全与合规的基线保障物理隔离本身是安全手段但不是安全问题的终点。即使实现了物理隔离租户集群内部的安全、镜像的安全、密钥的管理等问题依然存在。我们在安全层面构建了多层防线硬件与固件安全确保物理服务器的BIOS/UEFI固件安全启动并定期更新。对于特别敏感的租户考虑使用带有SGX、TDX等机密计算技术的CPU从硬件层面保护运行中的数据。供应链安全建立私有的容器镜像仓库对所有基础镜像和常用框架镜像进行漏洞扫描。强制要求所有租户的镜像必须从受信任的仓库拉取。运行时安全在集群中部署运行时安全工具如Falco检测容器内的异常行为如特权提升、敏感文件访问等。这项配置可以作为“黄金套餐”的标准服务。合规性框架针对不同行业如金融、医疗预先准备好符合PCI DSS、HIPAA等标准的集群配置模板。当有此类需求的租户入驻时可以直接套用模板快速创建合规的环境并生成相应的合规性报告文档。5. 实践复盘一次从故障中演进架构的历程最后我想分享一个真实的案例它促使我们下决心投资建设混合隔离架构。我们有一个提供视频内容分析API的SaaS服务客户包括媒体公司和安防公司。最初所有客户都运行在一个大集群中仅靠Namespace隔离。起初相安无事直到一个安防客户开始上传大量高分辨率摄像头流进行实时分析。他们的工作负载特点是持续高强度的GPU解码和模型推理对显存带宽和视频编码器硬件占用极高。很快其他媒体客户的API延迟开始出现周期性尖峰投诉不断。我们通过监控发现当安防客户的流量高峰时GPU的NVLink带宽和视频编解码器引擎利用率持续在95%以上这严重挤占了共享同一GPU的其他容器的资源尽管它们的显存使用量看起来并不高。这是一个典型的硬件共享竞争问题Kubernetes的资源配额只关心显存和GPU卡数量根本无法限制这种底层硬件单元的竞争。我们当时的应急方案是节点亲和性快速将这位安防客户的Pod调度到一批独立的节点上。立竿见影其他客户的延迟恢复了正常。但这只是权宜之计因为那批节点从此无法被其他客户使用利用率很低。这次事件让我们系统性地反思并推动了平台升级资源模型精细化我们引入了新的设备插件能够上报GPU内部不同单元如编解码引擎、张量核心的利用率并在调度时考虑这些更细粒度的资源。制定隔离套餐我们正式定义了“标准版”和“专业版”套餐。标准版仍在共享池中但我们会监控并避免将特性冲突如都重度使用编解码器的租户放在一起。专业版则提供节点级隔离并承诺更高的SLA。建立容量规划与调度策略平台调度器会优先尝试将租户工作负载打散到不同节点避免热点。同时对于专业版租户我们开始探索更灵活的弹性策略允许他们在夜间业务低峰期将一些非实时任务调度到共享的“竞价资源池”中运行以降低成本。这个案例说明物理隔离方案不是一蹴而就的设计而是一个随着业务复杂度、客户需求和故障教训不断演进的动态过程。核心在于建立清晰的资源视图、可灵活组合的隔离策略以及一个能够快速响应和调整的平台能力。