Kubeflow Pipeline多组件访问Persistent Volume触发FileNotFoundError问题
Kubeflow Pipeline 跨组件PVC访问报错排查方案
首要修复点:挂载路径语法错误
你当前的卷挂载代码存在低级语法错误,挂载路径多写了一个单引号:
# 错误写法,实际挂载路径为 /mnt' 而非预期的 /mnt comp1.add_pvolumes({"/mnt'": vop.volume}) comp2.add_pvolumes({"/mnt'": comp1.pvolume})
修改为正确的无单引号路径即可解决绝大多数情况的报错:
comp1.add_pvolumes({"/mnt": vop.volume}) comp2.add_pvolumes({"/mnt": comp1.pvolume})
其他可选排查项
如果修改路径后仍然报错,按以下顺序排查:
- 强制组件执行顺序:添加
comp2.after(comp1)明确要求comp2在comp1执行完成后再启动,避免KFP调度时两个组件并行运行,comp2启动时comp1还未完成文件写入 - 检查存储卷访问模式兼容性:你当前使用的
VOLUME_MODE_RWO模式仅支持PVC挂载到同一个集群节点,如果两个组件被调度到不同节点会导致挂载失败,可以给两个组件添加相同的节点亲和性规则,或者如果集群存储支持多节点读写,将模式改为VOLUME_MODE_RWM - 替换路径写法为绝对路径:不要使用
os.path.abspath("data")生成路径,直接写死绝对路径/mnt/data,避免组件默认工作目录非/mnt导致写入/读取路径偏差 - 增加写入校验逻辑:在comp1的文件写入代码后添加目录打印逻辑,确认文件确实写入PVC:
print(os.listdir("/mnt")) assert os.path.exists("/mnt/data"), "文件写入PVC失败"
内容的提问来源于stack exchange,提问作者Lucas
相关产品推荐
相关产品推荐

