模型天天要验证,30 GB 镜像却要拉三小时——怎么压到 3 分钟
目录
KubeCon Japan 2026 刚落幕,CNCF 宣布 Subaru 拿下 End User Case Study 竞赛冠军——故事不是车企上云那一套,而是斯巴鲁怎么给下一代 EyeSight(ADAS 辅助驾驶)的 AI 研发平台减负
数字很扎眼:30 GB 以上的 ML/CUDA 镜像,pull 从约 3 小时 缩到约 3 分钟,官方口径 60 倍。同时用 GitOps 管 25 个应用定义,ML 流水线端到端自动化
完整架构和下游结果见 CNCF Case Study
为啥现在要关注
AI 训练/推理团队迟早会碰到同一组 基建问题,跟是不是造车无关:
- 镜像越来越大——CUDA 基础镜像 30 GB 起步,Pod 起不来,工程师分不清「还在拉」还是「已经挂了」
- 部署还在手工跑脚本——在命令行里敲 Helm,dev/prod 搞混是真实运营风险
- ML 流水线阶段多、依赖杂——数据预处理、校验、训练、转模型、存 artifact、下游处理,缺统一编排就难谈可复现
斯巴鲁的场景是 on-prem GPU 集群 上做 EyeSight 下一代模型的数据→训练→推理闭环。瓶颈不在有没有 Kubernetes,而在 大镜像怎么快拉、应用怎么 declarative 交付、ML workflow 怎么在集群里串起来
这条 case 的价值:不是安利某一家云厂商,而是 CNCF 项目组合怎么解真实 AI 平台痛点——Envoy Gateway、Gateway API、MetalLB、Harbor、Argo CD、Helmfile、Argo Workflows 各干一段
三个坑,他们怎么填
坑一:大镜像 pull 拖垮开发节奏
现象:CUDA 镜像超 30 GB,Pod 启动前光 pull 就要 3 小时+,训练/推理周期变得不可预测。团队原话——「超过三小时的时候,很难判断系统是正常工作还是已经出错了」
解法不是换更大的盘,而是 缩短镜像从 Harbor 到节点的网络路径:
- Harbor 作容器 registry
- Envoy Gateway + Gateway API 管 registry 流量路由
- Envoy Gateway 以 hostNetwork 模式部署,减少路径上的网络开销
- 尽量把需要通信的工作负载 调度到同一节点,流量走本地
- MetalLB 提供 LoadBalancer,把路径和带宽利用做实
结果:同样 30 GB+ 镜像,pull 约 3 分钟。Pod 起得快,GPU 空转和干等不确定都少一截
坑二:部署靠手工脚本,GitOps 上不来
现象:部署流程是 手动执行 shell 调 Helm,能跑,但难标准化、难 declarative,dev/prod 差异靠人肉记,误部署是运营挑战
解法:Argo CD + Helmfile,在现有 Helm chart 资产上叠 GitOps——应用定义进 Git,Argo CD 负责同步。团队管 25 个应用定义,部署可复现、环境间一致性上去一截
坑三:ML 流水线缺统一编排
现象:数据准备、预处理、校验、训练、模型转换、artifact 存储、下游处理——阶段多、依赖明,但没有 Kubernetes 原生方式串起来
解法:Argo Workflows,把整条 ML 流水线定义成 K8s-native workflow,阶段依赖显式声明,可并行处并行,减少手工介入,为 可复现的模型迭代 打底
60 倍拉镜像:值得拆的网络直觉
这个数字最容易被写成斯巴鲁优化了 Kubernetes——说白一点,核心是 registry 到 kubelet 这条链路上的多余中转和带宽浪费
几个可操作点(case study 里写死的,不是猜的):
| 手段 | 干什么 |
|---|---|
| Harbor | 统一存大 ML/CUDA 镜像 |
| Envoy Gateway + Gateway API | registry 流量入口与路由 |
| hostNetwork | Envoy 少一层 overlay / iptables 折腾 |
| 同节点调度 | pull 流量尽量不出节点 |
| MetalLB LoadBalancer | 给这条路径一个稳定的 LB 面 |
如果你团队也在 on-prem GPU 集群上拉 10 GB~几十 GB 的训练镜像,先别急着加带宽——对照上面问:registry 流量是不是绕了远路?Gateway 是不是叠在 overlay 里白白耗?pull 和训练节点能不能同城同节点?
斯巴鲁是 ADAS 图像识别 + 立体相机技术栈,迭代节奏跟今天改一版模型、明天就要跑验证绑在一起;三小时 pull 一次,一天能丢几个有效实验窗口,业务侧会直接感受到
踩坑清单(对照自检)
镜像层
- ML 基础镜像是否 monolithic、是否该拆 runtime 与代码层(case 里没写拆镜像,但 30 GB 本身是信号)
- pull 慢时,监控能不能区分
ImagePullBackOff、registry 超时、还是节点磁盘 IO
交付层
- Helm 还在 SSH 上手敲,还是已经把 Git 当成单一事实来源
- dev/staging/prod 的 values 差异有没有被 Helmfile/类似工具 codify
流水线层
- 训练→转 ONNX/TensorRT→推 artifact→触发下游,是 cron + 脚本,还是 workflow CRD
- 失败重跑、依赖传递、并行 stage,有没有平台级答案
边界
- 案例环境是 on-prem GPU,不是上公有云就自动好
- 未来规划里提到 多节点分布式训练(高带宽 secondary network) 和 edge 部署自动化——说明当前优化聚焦在单集群交付与镜像 pull,分布式训练是下一章
要不要进你工具箱
按你现在痛不痛来分,别因为 CNCF 奖杯就整包搬:
| 如果你… | 值得跟进的组合 |
|---|---|
| 大镜像 pull 是头号瓶颈,registry 在集群内 / on-prem | Harbor + Envoy Gateway + Gateway API + MetalLB,重点看 hostNetwork 与同节点调度 |
| 部署靠人肉 Helm,GitOps 喊了两年没落地 | Argo CD + Helmfile,先挑 5~10 个应用试点,斯巴鲁是 25 个定义 |
| ML 阶段多、脚本散落 | Argo Workflows(或同类 workflow 引擎),先把一条 数据→训练→artifact 主路径 workflow 化 |
| 只是偶尔跑小模型、镜像 <5 GB | 这篇的网络优化优先级可以往后放,先把 GitOps 和流水线 reproducibility 理顺 |
不必迷信 60 倍——你的镜像体积、registry 拓扑、容器网络 / overlay 和斯巴鲁不一定一样。值得抄的是 问题分解:先量化 pull 耗时,再动网络路径,再 GitOps,再 workflow,而不是一上来堆项目名
CNCF 官方 stack 列表:Kubernetes、Argo CD、Argo Workflows、Envoy Gateway、Gateway API、MetalLB、Helm、Harbor。细节以 case study 原文 为准
和我自己做的事有什么关系
我这边在做开源集群控制台 CiliKube,也折腾 AI 调查、终端协作——Agent 和训练任务一旦要在集群里 真跑,最后都会落到同一问:环境多久就绪、部署能不能复现、流水线能不能重跑
斯巴鲁没造新框架,是用 已有 CNCF 拼图 把 ADAS AI 平台的基建问题一层层削掉。对做平台工程的人,这比又一家 Fortune 500 上 Kubernetes 更有参考价值——尤其是 on-prem GPU + 超大镜像 + GitOps + ML workflow 这条组合拳
术语速查
| 缩写 | 含义 |
|---|---|
| CNCF | Cloud Native Computing Foundation,云原生计算基金会 |
| ML | Machine Learning,机器学习;文里多指训练/推理与配套流水线 |
| ADAS | Advanced Driver Assistance Systems,高级驾驶辅助系统;EyeSight 是斯巴鲁自家 ADAS |
| CUDA | NVIDIA 的 GPU 并行计算平台;基础镜像常带这个栈 |
| declarative | 声明式:写期望状态,由系统对齐落地;相对的是命令式一步步敲操作 |
| GitOps | 以 Git 为单一事实来源做交付与同步,不是又一种 CI 品牌 |
| K8s / Pod | Kubernetes;Pod 是最小调度与运行单元 |
| Gateway API | Kubernetes 官方下一代南北向流量 API(比旧 Ingress 模型更规整) |
| hostNetwork | Pod 直接用宿主机网络命名空间,少一层容器网络转发 |
| CRD | Custom Resource Definition,用自定义资源扩展 Kubernetes API |
| CNI | Container Network Interface,集群容器网络插件接口 |
| ONNX / TensorRT | 模型交换格式 / NVIDIA 推理优化运行时,常见训练完再转一刀 |
文中工具官网
| 工具 | 官网 |
|---|---|
| Kubernetes | https://kubernetes.io/ |
| Harbor | https://goharbor.io/ |
| Envoy Gateway | https://gateway.envoyproxy.io/ |
| Gateway API | https://gateway-api.sigs.k8s.io/ |
| MetalLB | https://metallb.io/ |
| Helm | https://helm.sh/ |
| Helmfile | https://helmfile.readthedocs.io/ |
| Argo CD | https://argo-cd.readthedocs.io/ |
| Argo Workflows | https://argo-workflows.readthedocs.io/ |
| CNCF | https://www.cncf.io/ |