首页 > 解决方案 > 从不同组件访问 kubeflow 中的持久卷

问题描述

我正在向我的 kubeflow 管道组件添加持久卷声明,我希望能够从不同的组件访问卷,以便我可以在其中存储数据并从其他组件中检索它。

  1. 体积定义:
vop = kfp.dsl.VolumeOp(
        name="create-pvc",
        resource_name="my-pvc",
        modes=kfp.dsl.VOLUME_MODE_RWO,
        size=volume_size
    )
  1. 将卷安装到组件:
comp1.add_pvolumes({"/mnt'": vop.volume})
comp2.add_pvolumes({"/mnt'": comp1.pvolume})
  1. 我在 comp1 中创建了一些数据并想从 comp2 中读取它
# data read from external source
data=some_data_frame_readed_from_gcs

# data pickled to volume
path = os.path.abspath("data")
with open(path, 'wb') as f:
    pickle.dump(data, f)
print("PATH: {}".format(path))
# output path is: "/mnt/data"

# Now I try to read it from comp2
with open(path, 'rb') as f:
    df = pickle.load(f)

  1. 这是 kubeflow 管道中显示的错误代码:
FileNotFoundError: [Errno 2] No such file or directory: '/mnt/data'

标签: persistent-volumeskubeflowkubernetes-pvckubeflow-pipelines

解决方案


您是否有特殊原因要使用卷?KFP 具有内置的数据传递机制(参见Python 的数据传递

如果您的数据小于 10GB,我建议使用内置的数据传递方法。

卷的支持较少,并且使组件不可移植。例如,Vertex AI Pipelines 不支持卷。


推荐阅读