BotOf TechAI / IoT / Full-Stack / 植物养护
返回首页AI 基础设施上生产前,Kubernetes 这几道边界必须收紧

AI 基础设施上生产前,Kubernetes 这几道边界必须收紧

·2 分钟阅读·

AI 平台从 demo 走到生产,最大的变化不是多几张 GPU,而是多租户。多个团队共享昂贵设备,跑不同镜像,读不同数据,调用不同模型。这个时候,Kubernetes 默认的软边界不够。

GPU 集群的安全问题比普通集群更麻烦。因为容器需要访问设备、驱动、共享内核、可能还要访问高速网络和本地缓存。你既要给性能开门,又要把越权路径关上。

节点池先分清楚

不要把所有 GPU 节点放进一个池子。至少按用途拆:

节点池边界
production inference高优先级、严格镜像、稳定驱动
training支持大任务、checkpoint、RDMA
notebook/devtime-slicing/MIG、低优先级、强限制
batch/offline可抢占、可中断

节点池拆开后,配合 taints/tolerations、node affinity、Kueue ResourceFlavor,让 workload 很难跑错地方。不要让用户自己记应该选哪个节点。

RuntimeClass 和 privileged 要管住

GPU Pod 需要访问设备,但不等于需要 privileged。生产环境应该限制:

  • 禁止默认 privileged;
  • 限制 hostPath;
  • 限制 hostNetwork;
  • 明确 RuntimeClass;
  • 禁止随意挂载 /dev
  • 禁止用户改动底层 driver 目录。

可以用 Pod Security Admission、OPA Gatekeeper、Kyverno 或自研 admission webhook 做策略。重点是让 GPU 权限最小化。

镜像链路要可信

AI 镜像经常很大,也经常包含第三方包、模型转换脚本、CUDA 扩展。供应链要管:

  • 私有 registry;
  • 镜像签名;
  • SBOM;
  • 漏洞扫描;
  • 基础镜像白名单;
  • CUDA/NCCL/PyTorch 版本基线。

不要让用户随便从公网拉训练镜像跑在有企业数据的 GPU 节点上。尤其是 Notebook 场景,最容易把“临时实验”变成长期风险。

Secret 和模型权重要分级

模型权重本身可能是资产,数据集更是敏感资产。平台要区分:

  • API key;
  • 对象存储凭证;
  • 模型权重访问权限;
  • 数据集访问权限;
  • 推理租户 token。

训练任务的 service account 不应该默认能读所有模型和所有数据。推理服务也不应该把上游 API key 写进镜像。Secret 挂载要最小化,最好用短期凭证和审计。

DRA 和 Device Plugin 的 RBAC

如果集群使用 DRA,要特别注意 ResourceClaim、DeviceClass、ResourceSlice 的访问权限。普通租户不应看到不属于自己的设备细节,也不应能创建 admin access 级别的 claim。

Device Plugin 时代也要管节点标签。用户如果能随便改 nodeSelector 或 toleration,可能绕过资源池策略。准入层要校验:某个 namespace 只能使用被授权的 GPU flavor。

网络边界

训练任务可能需要高性能网络,但不是所有 Pod 都应该访问所有网络。

实践上可以分层:

  • 在线推理只暴露 gateway 入口;
  • 训练 namespace 访问数据存储和 checkpoint;
  • Notebook 默认禁止访问生产服务;
  • RDMA/hostNetwork 只给受控任务;
  • egress 做审计和限制。

多租户环境里,网络策略比很多人想象得重要。一个能访问对象存储和内部模型 registry 的 Notebook,风险不比生产服务小。

Runbook 要写到任务级

生产平台一定会遇到这些事故:

  • 某张 GPU XID 反复报错;
  • 某个训练任务 NCCL hang;
  • 推理服务 P99 突增;
  • 模型发布后显存超限;
  • checkpoint 恢复失败;
  • 队列被低优先级任务占满。

每类事故要有明确动作:谁能 cordon 节点,谁能驱逐任务,什么情况下可以抢占,哪些指标要保留,checkpoint 怎么恢复。不要等故障时让值班同学读源码。

上生产的最低检查表

项目必须回答
资源谁能申请哪种 GPU,最多多少
调度是否有队列、优先级、抢占边界
隔离MIG/time-slicing/整卡策略是否清楚
镜像是否有签名、扫描、基线
数据数据集和模型权重是否分权
指标DCGM、token、step、队列指标是否齐全
恢复checkpoint、重试、回滚是否演练
安全RBAC、NetworkPolicy、Pod Security 是否生效

GPU 集群的生产化不是把 demo 服务稳定运行一周。它要在多团队、多模型、多任务同时存在时,仍然能保证边界、成本和恢复路径。

延伸阅读