算力统筹与分布式存储

想了解平台为什么/如何统筹算力、各环节(notebook/pipeline/推理)共享同一套分布式存储、以及挂载配置串(pvc/hostpath/configmap/memory)的语义时阅读。

01-架构原理 / 算力与存储设计
算力统筹算力均衡资源利用率异构算力GPUvGPU分布式存储存储挂载volume_mountpvchostpathconfigmapmemorynfsjuicefsalluxio

算力统筹与分布式存储

算力统筹 / 均衡

面临的问题

  • 时间、空间维度上 GPU 资源利用率不足。
  • 异构算力环境,任务需区分 CPU / GPU(T4) / GPU(V100) / vGPU 等类型。
  • 超大数据量必须跑分布式,且资源要尽可能多。
  • 个人代码和环境依赖固定机器,而机器的回收、损坏、裁撤、磁盘不足等事件频繁,耗费大量工程运维时间。
  • GPU 训练中利用率优化的主动性不大,用户会优先考虑通过扩容来提升效率。

解决方案

  • 统筹底层算力,最大程度提高剩余资源的利用率。
  • 项目组间算力自动均衡,基本能把任务挂起等待时长保持在 5 分钟以内。
  • 支持边缘集群模式,充分利用边缘网络资源,避免数据同步。
  • 智能修正任务的启动资源配置,避免不合理的资源申请。

算力多集群统筹

平台分布式存储挂载

面临的问题

  • 为减少数据导入导出链路,避免用户在开发 / 调试 / 训练 / 校验 / 上线时,数据文件在不同系统之间来回搬运。

解决方案

  • 平台在开发 notebook、数据处理 / 训练 pipeline、模型服务化中挂载相同的分布式存储,不同用户挂载各自的子目录。同一用户在平台各个环节下 /mnt/$username 都是其个人工作目录。

平台分布式存储

  • 数据隔离pvc 挂载会自动追加用户个人子目录(subPath = 用户名)。
  • 组目录模式:支持多人共用分布式存储,满足团队工作目录的需求。
  • 多存储挂载:每个项目可以添加多个 pvc 挂载,比如低性能 CFS、高性能 SSD Ceph,应用于不同的数据处理 / 训练场景。
  • 解耦分布式存储实现:只需把存储挂载或软链到主机(/data/k8s/),或绑定到 pvc 即可。
  • 磁盘爆炸:平台提供存储监控,会提醒用户及时删除不再使用的大文件目录。
  • 磁盘不足:存储的扩缩容是弹性的,用户无需担心存储大小问题。
  • 其他类型挂载:如 hostpath、memory、configmap。

挂载的配置

平台用 挂载源(类型):容器目录 的字符串语法描述每条挂载,多条用逗号分隔。常见类型如下(解析逻辑见 myapp/utils/py/py_k8s.py 约 940-1060 行):

  • pvc 挂载,例如 kubeflow-user-workspace(pvc):/mnt:会自动把 pvc 下的 $username 子目录(subPath=username)挂载到容器目录的 $username 子目录下,实现按用户隔离。

    平台默认任务挂载即为 kubeflow-user-workspace(pvc):/mnt(见 myapp/init/init-inference.jsonmyapp/cli.py)。

  • hostpath 挂载,例如 /data/kubeflow/k8s/kubeflow/pipeline/workspace/group1(hostpath):/mnt1:把主机目录挂载到容器目录,一般用于多人共享编辑同一目录。
  • configmap 挂载,例如 kubernetes-config(configmap):/root/.kube:把 configmap 挂载到容器目录,一般用于把特殊配置文件投递进容器。
  • 内存挂载,例如 4G(memory):/dev/shm:把内存(emptyDir medium=Memory)挂载到容器,一般用于解决 K8s 共享内存不足的问题。

平台还支持几种与上面同源的挂载类型(同见 py_k8s.py):

  • (pvc-share):把整个 pvc 挂载到目标目录、追加用户子目录,用于"组目录 / 团队共享"场景。
  • (nfs):直接以 ip/path(nfs):容器目录 方式挂载 NFS。
  • (storage):外部存储盘,挂载时不追加子目录。

分布式文件系统

NFS

NFS 是最常用的共享存储方案,部署方式见 02-部署安装 段中的「NFS 离线部署」文档。

JuiceFS

可使用 JuiceFS 作为分布式文件系统(无需挂载到每台机器即可实现多个 Pod 直接共享统一目录)。部署要点(详见 02-部署安装 段中的 JuiceFS 部署文档):

  • 执行 cd install/kubernetes/juicefs/ && sh start_juicefs.sh
  • 执行前请阅读 install/kubernetes/juicefs/README.md
  • 记得修改 install/kubernetes/juicefs/.env 中的 JUICEFS_HOST_IP 为本节点 IP,并保证 /data 目录有足够空间。
  • 注意配置开机自动挂载,避免机器重启后挂载失效。

Alluxio

Alluxio 也可作为分布式存储缓存层,部署方式见 02-部署安装 段中的「Alluxio 分布式存储部署」文档。

最后更新 2026-06-30完整文档以官方仓库为准:GitHub Wiki