主题
存储
要让任务读写对象存储中的数据,需要把 Bucket、StorageClass、PVC 和容器挂载路径逐层对应起来。
看懂文件到容器的路径
text
Bucket / 对象键
↑
StorageClass + Secret(每个关联集群)
↑
PVC(Task 启动时确保存在)
↑
Pod volumeMount
↑
容器路径(应用实际读写的位置)这条路径包含三个层次:
- 对象存储:数据位于 Bucket 中,并用对象键标识。文件浏览器把对象键的公共前缀显示为目录,底层不一定存在独立的目录对象。
- RLark 存储配置:记录 Provider、Endpoint、Bucket、Region、Path Style 和关联集群。RLark 会在每个关联集群中应用同名的 rclone CSI StorageClass 和访问 Secret。
- Task 挂载:创建器为角色生成 PVC,记录 PVC 名称到 StorageClass 名称的映射,再把 PVC 挂载到指定容器路径。
StorageClass 是集群级 Kubernetes 资源。一个存储配置出现在控制台列表中,不代表每个关联集群都能用对应凭据访问 Bucket。
让任务读取已上传文件
文件浏览器显示“上传成功”后,还要逐项确认:
- 对象位于存储配置指向的 Bucket 和前缀。
- Task 位于已关联该 StorageClass 的集群。
- PVC 已创建并绑定。
- PVC 已挂载到预期容器路径。
- 准备脚本或运行命令读取的是容器路径,而不是 Bucket 名称或本地电脑路径。
任一项不一致,都可能表现为“控制台看得到文件,但容器里没有”。
选择需要持久保存的数据
- 数据集、模型权重、checkpoint、TensorBoard 事件文件和最终结果如果需要跨 Pod 生命周期保留,应写入经过确认的对象存储挂载路径。
- 需要复用的中间产物也应写入持久挂载,并使用稳定、可追踪的文件名或对象键。
- 程序和依赖由镜像版本管理;代码和配置模板保存在版本控制中。
- 缓存、解压目录和可重新生成的临时文件可以留在容器文件系统,但 Pod 重建后可能丢失。
- 凭据、SSH 私钥和临时签名链接不要作为普通文件上传,应使用平台批准的 Secret 或凭据管理流程。
多个 Worker 共享挂载前先验证并发访问
同一角色的所有副本会引用同一个自动创建的 PVC,该 PVC 使用 ReadWriteOnce 和 10Gi。多个节点能否同时挂载,以及底层对象存储是否满足应用所需的一致性,取决于目标集群的 CSI 驱动和后端。
如果多个 Worker 需要使用同一挂载,请先由平台管理员验证该集群的访问方式。写入端还应使用互不冲突的对象键,或由应用提供并发协调。没有完成验证时,不要并发写入同一个 checkpoint、事件文件或结果路径。
避开镜像已有目录
卷挂载到容器路径后,会遮蔽镜像在同一路径下原本可见的内容。例如,镜像在 /workspace/data 中预置了文件,而 Job 又把存储挂载到 /workspace/data,运行中的容器只能看到挂载卷中的内容。镜像文件通常没有被删除,只是在挂载期间不可见。
选择挂载路径时:
- 不要覆盖镜像中必须保留的程序、依赖或默认配置目录;
- 准备脚本和运行脚本应使用同一个明确的绝对路径;
- 明确区分输入、checkpoint、最终输出和临时目录。
只有写入挂载路径内的数据才会进入对应的持久存储。切换 cd 不会让其他目录自动持久化。任务完成前,应核对应用的实际输出路径;回收 Pod 前,再从文件浏览器或获批准的存储工具确认预期对象已经存在。
在 hostPath 和对象存储之间选择
根据数据所在位置、是否需要跨 Pod 保留以及共享范围选择挂载方式。
| 方式 | 数据位置 | 适用场景 | 主要限制 |
|---|---|---|---|
hostPath | 被调度节点的本地目录 | 明确依赖单个节点本地数据 | 不会复制到其他节点,也不是跨 Worker 共享存储 |
| 对象存储挂载 | StorageClass、Secret、PVC 和 CSI 驱动连接的 Bucket | 需要跨 Pod 生命周期保留或供后续任务使用 | 需要逐集群验证凭据、挂载和并发访问方式 |
同一个容器路径不能由互相冲突的多个卷占用。
删除或改配前确认影响
- 存储凭据应专用、最小权限并按组织策略轮换;不要写入 Job 命令、环境变量示例、日志或截图。
- 从存储配置中移除集群,会删除该集群中的对应 StorageClass 和 Secret。操作前确认没有 Task 依赖它。
- 删除 StorageClass 配置不会删除 Bucket 中的对象;删除对象也不会自动移除 Job 中的挂载配置。
- 文件浏览器删除对象后没有 RLark 回收站。需要恢复能力时,应提前在对象存储侧启用版本控制或备份。