Skip to content

构建 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)需通过 RedfishTinkerbell 统一注入

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

⚠️ 注意:避免滥用 Kindk3s 做租户集群——它们缺乏生产级 etcd 备份与审计日志能力;vCluster 是唯一通过 CNCF 一致性认证的租户方案。

▶️ 3. GPU 分配:DRA + MIG + Kueue 的黄金三角

Kubernetes 1.34 GA 的 Dynamic Resource Allocation (DRA) 是分水岭。它终结了 nvidia.com/gpu: 1 的「整卡霸占」时代:

传统 Device PluginDRA 模型
请求 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 条红线

  1. GPU 准入即审计:所有节点加入集群前,强制执行 dcgmi diag -r 1(NCCL 带宽测试)+ nvidia-smi -q -d MEMORY(ECC 状态校验),失败节点自动 cordon 并告警。
  2. 租户成本可视化:集成 OpenCost + DCGM GPU-seconds,按 team-a/vCluster 维度生成每日账单,避免「GPU 黑箱」。
  3. MIG 切片不可逆性管理:禁用 nvidia-smi -i 0 -mig 1 类手动命令,所有 MIG 配置必须通过 NVIDIA GPU Operator 的 CRD 管理并 GitOps 化。
  4. 网络隔离硬约束:Cilium eBPF 必须启用 hostPort 阻断 + toEntities: cluster 策略,杜绝租户间 NCCL 流量绕过策略引擎。
  5. 故障自愈 SLA:GPU 故障检测(DCGM health check)→ 自动迁移 vCluster(vcluster sync)→ 通知租户(Webhook to Slack)全流程 ≤ 90 秒。

延伸阅读:CNCF 生态中已被验证的 AI 工厂组件清单

类别推荐方案替代方案(慎用)关键理由
租户隔离vCluster(CNCF Sandbox)Kind / k3s / Rancher Multi-ClustervCluster 提供 etcd 级隔离,且支持 kubectl proxy --as=system:serviceaccount:team-a:default 模拟租户视角
GPU 分配DRA + NVIDIA GPU OperatorDevice Plugin + Custom SchedulerDRA 是唯一支持拓扑感知(NUMA/PCIe)和内存约束的原生方案
推理服务KServe + vLLM RuntimeTriton / TorchServeKServe 的 InferenceService CRD 天然适配多租户 GitOps,vLLM 的 PagedAttention 显存效率比 Triton 高 2.3x(MLPerf 2026 数据)
可观测性Prometheus + DCGM Exporter + OpenTelemetry CollectorGrafana Loki(仅日志)GPU 利用率必须基于 DCGM_FI_DEV_GPU_UTIL,而非 nvidia_smi_dmon(采样延迟 > 2s)
存储加速Ceph CSI + Lustre over RDMA(用于 Checkpoint)NFS / EBS大模型 checkpoint 写入需 ≥ 2GB/s 持续带宽,NFS 无法满足

📚 深度推荐

AI 工厂不是未来主义幻想,而是今天就能在 Kubernetes 上落地的确定性工程实践。它的核心不在模型,而在你能否让 GPU 成为像 CPU 一样可计量、可隔离、可审计的基础设施单元。当你第一次看到 kubectl top nodegpu-utilization 列稳定在 78%,且 vCluster list 显示 17 个租户零冲突运行时——你就已经站在了 AI 运维的新大陆上。