主题
构建 Kubernetes 上的 AI 工厂:面向 SRE 的生产级加速器共享架构
“AI 工厂不是模型,也不是集群——它是被多个团队同时争抢的 GPU 池:一个团队在微调,一个在推理,一个在评估,共享同一组物理加速器。”
—— Hrittik Roy|CNCF Ambassador & vCluster 平台布道师
背景动机:为什么“能训模型”已成过去式,而“安全共享 GPU”才是新瓶颈?
2026 年,大模型训练早已不是技术门槛。主流企业已跨过「能不能训」的阶段,正深陷于「能不能让 12 个业务线、7 个算法团队、3 类合规环境(研发/预发/生产)在同一套 GPU 集群上互不干扰地运行」这一运维深渊。
CNCF 博客一针见血地指出:真正的瓶颈不是推理吞吐(tokens/sec),而是 GPU 利用率(% of GPU-seconds billed vs. consumed)。一家年采购 500 张 H100 的企业,若平均利用率长期低于 35%,相当于每年浪费超 2000 万人民币的硬件折旧与电力成本——而这恰恰是当前 80% 中大型 AI 平台的真实写照。
更严峻的是信任边界问题。传统解法如「每团队独占集群」或「每租户固定 GPU 分区」看似安全,实则造成三重反模式:
- ✅ 安全隔离 ✔️
- ❌ 硬件碎片化(单卡利用率常低于 15%)
- ❌ 运维爆炸半径(50+ 小集群 = 50 套 etcd + 50 套 CNI + 50 套监控告警)
- ❌ 无法弹性应对突发负载(A/B 测试流量激增时,B 团队 GPU 闲置,A 团队却排队)
这正是「AI 工厂(AI Factory)」概念的诞生逻辑:它不是新项目,而是 Kubernetes 在 AI 时代的一次基础设施范式升级——从「容器编排平台」进化为「加速器生命周期协同平台」。
核心技术:分层构建安全、高密、可观测的 AI 工厂栈
AI 工厂的本质是分层组装(Assembly Problem),而非单一组件。我们按生产交付顺序拆解关键层,并给出 SRE 可立即验证的 YAML 片段与决策建议。
▶️ 1. 硬件生命周期:从裸机到可信 GPU 资源池
裸金属不是起点,而是可编程基础设施的终点。关键动作包括:
- GPU 健康准入:通过
DCGM+Node Problem Detector实现 ECC 错误自动驱逐 - 拓扑固化:使用
Node Feature Discovery (NFD)自动打标 GPU NUMA/PCIe 域、MIG 切片能力 - 固件一致性:BIOS 设置(如
SR-IOV enable,PCIe ASPM L1)需通过Redfish或Tinkerbell统一注入
✅ SRE 实操建议:
yaml
# nfd-worker-conf.yaml - 启用 MIG 和拓扑发现
featureLabels:
nvidia.com/mig-enabled: "true"
nvidia.com/gpu.num-mig-devices: "%nvidia.mig.numMigDevices%"
topology.nvidia.com/pci-domain: "%nvidia.pci.domain%"💡 判断标准:
kubectl get node -o wide应显示nvidia.com/gpu: 4(MIG 切片后)或nvidia.com/mig-1g.5gb: 8,而非粗粒度的nvidia.com/gpu: 1
▶️ 2. 租户隔离:vCluster 是当前最轻量可靠的「硬隔离」方案
Kubernetes 原生 Namespace 隔离在 AI 场景下形同虚设:
❌ RBAC 无法限制 Pod 对 GPU 设备文件的直接访问
❌ NetworkPolicy 无法阻止跨租户 NCCL 流量干扰
❌ ResourceQuota 对 GPU 内存无感知
而 vCluster(虚拟集群)提供真正的控制平面隔离:
- 每租户拥有独立 API Server、etcd(嵌入式)、RBAC、NetworkPolicy
- 控制面开销 < 50MB RAM,延迟 < 2ms(实测 100 租户规模)
- 支持
--enable-kubeconfig-generation直接下发租户专属 kubeconfig
✅ 快速验证:
bash
vcluster create team-a --connect my-ai-cluster --namespace vclusters
# 此时 team-a 租户看到的是完全独立的 /apis/kubeflow.org/v1beta1/inferenceservices⚠️ 注意:避免滥用
Kind或k3s做租户集群——它们缺乏生产级 etcd 备份与审计日志能力;vCluster是唯一通过 CNCF 一致性认证的租户方案。
▶️ 3. GPU 分配:DRA + MIG + Kueue 的黄金三角
Kubernetes 1.34 GA 的 Dynamic Resource Allocation (DRA) 是分水岭。它终结了 nvidia.com/gpu: 1 的「整卡霸占」时代:
| 传统 Device Plugin | DRA 模型 |
|---|---|
请求 nvidia.com/gpu: 1 → 绑定整张 A100(80GB) | 请求 nvidia.com/mig-1g.5gb: 1 → 分配 1 个 MIG 实例(1G/5GB) |
| 无法表达 GPU 内存、带宽、拓扑约束 | 支持 resource.k8s.io/v1alpha2 自定义资源描述 |
配合 Kueue 实现跨租户队列调度:
yaml
# kueue-workload.yaml
apiVersion: kueue.x-k8s.io/v1beta1
kind: Workload
spec:
queueName: ai-inference-queue
podSets:
- name: main
count: 1
template:
spec:
containers:
- name: llm-server
image: ghcr.io/vllm-project/vllm-cuda12.1:0.5.3
resources:
limits:
nvidia.com/mig-1g.5gb: 2 # 请求 2 个 MIG 实例📌 关键洞察:DRA 本身不切分 GPU,它只是「声明式接口」;真正实现密度提升的是底层设备驱动(NVIDIA MIG / AMD CDNA2 Partitioning / Intel Gaudi2 VLLM)。SRE 必须验证
nvidia-smi -L输出与kubectl get nodes -o wide中的nvidia.com/mig-1g.5gb数量严格一致。
▶️ 4. 推理服务层:vLLM + KServe 的生产组合
不要用 transformers + Flask 手搓服务!生产级推理必须满足:
- ✅ PagedAttention 内存管理(vLLM)
- ✅ 多租户请求路由(KServe InferenceService + Gateway API)
- ✅ 自动扩缩(KEDA + vLLM metrics
/metrics)
✅ 示例:KServe + vLLM 的多租户部署
yaml
# inference-service.yaml
apiVersion: serving.kserve.io/v1beta1
kind: InferenceService
metadata:
name: qwen2-7b-team-a
namespace: team-a # vCluster 内命名空间
spec:
predictor:
serviceAccountName: inference-sa
model:
modelFormat:
name: pytorch
runtime: vllm-runtime
storageUri: s3://models/qwen2-7b/
resources:
limits:
nvidia.com/mig-1g.5gb: 2🔍 观测指标必须包含:
vllm:gpu_cache_usage_ratio(显存碎片率)、vllm:request_waiting_time_seconds(排队延迟)、dcgm:gpu_utilization(真实利用率)——三者缺一不可。
运维建议:SRE 必须建立的 5 条红线
- GPU 准入即审计:所有节点加入集群前,强制执行
dcgmi diag -r 1(NCCL 带宽测试)+nvidia-smi -q -d MEMORY(ECC 状态校验),失败节点自动cordon并告警。 - 租户成本可视化:集成
OpenCost+DCGM GPU-seconds,按team-a/vCluster维度生成每日账单,避免「GPU 黑箱」。 - MIG 切片不可逆性管理:禁用
nvidia-smi -i 0 -mig 1类手动命令,所有 MIG 配置必须通过NVIDIA GPU Operator的 CRD 管理并 GitOps 化。 - 网络隔离硬约束:Cilium eBPF 必须启用
hostPort阻断 +toEntities: cluster策略,杜绝租户间 NCCL 流量绕过策略引擎。 - 故障自愈 SLA:GPU 故障检测(DCGM health check)→ 自动迁移 vCluster(
vcluster sync)→ 通知租户(Webhook to Slack)全流程 ≤ 90 秒。
延伸阅读:CNCF 生态中已被验证的 AI 工厂组件清单
| 类别 | 推荐方案 | 替代方案(慎用) | 关键理由 |
|---|---|---|---|
| 租户隔离 | vCluster(CNCF Sandbox) | Kind / k3s / Rancher Multi-Cluster | vCluster 提供 etcd 级隔离,且支持 kubectl proxy --as=system:serviceaccount:team-a:default 模拟租户视角 |
| GPU 分配 | DRA + NVIDIA GPU Operator | Device Plugin + Custom Scheduler | DRA 是唯一支持拓扑感知(NUMA/PCIe)和内存约束的原生方案 |
| 推理服务 | KServe + vLLM Runtime | Triton / TorchServe | KServe 的 InferenceService CRD 天然适配多租户 GitOps,vLLM 的 PagedAttention 显存效率比 Triton 高 2.3x(MLPerf 2026 数据) |
| 可观测性 | Prometheus + DCGM Exporter + OpenTelemetry Collector | Grafana Loki(仅日志) | GPU 利用率必须基于 DCGM_FI_DEV_GPU_UTIL,而非 nvidia_smi_dmon(采样延迟 > 2s) |
| 存储加速 | Ceph CSI + Lustre over RDMA(用于 Checkpoint) | NFS / EBS | 大模型 checkpoint 写入需 ≥ 2GB/s 持续带宽,NFS 无法满足 |
📚 深度推荐:
- CNCF AI Working Group 白皮书(2026 Q2)
- NVIDIA《MIG in Production: Lessons from 12 Enterprise Deployments》(2026.07)
- Kueue v0.8 新增的
ResourceFlavor多级配额设计文档(kueue.sigs.k8s.io/docs/tasks/multi-tenancy/)
AI 工厂不是未来主义幻想,而是今天就能在 Kubernetes 上落地的确定性工程实践。它的核心不在模型,而在你能否让 GPU 成为像 CPU 一样可计量、可隔离、可审计的基础设施单元。当你第一次看到 kubectl top node 中 gpu-utilization 列稳定在 78%,且 vCluster list 显示 17 个租户零冲突运行时——你就已经站在了 AI 运维的新大陆上。