【问题标题】:Mounting an existing volume from a Kubeflow Pipeline: kfp.VolumeOP creates a new volume instead of creating a PVC to existing volume从 Kubeflow 管道挂载现有卷:kfp.VolumeOP 创建新卷而不是为现有卷创建 PVC
【发布时间】:2022-12-31 02:41:43
【问题描述】:
我是 KubeFlow 的新手,正在尝试移植/调整现有解决方案以在 KubeFlow 管道中运行。我现在要解决的问题是现有解决方案通过挂载卷共享数据。我知道这不是组件在 KubeFlow 中交换数据的最佳实践,但这将是一个临时的概念证明,我别无选择。
我在从管道访问现有卷时遇到问题。我基本上是在运行 KubeFlow 文档 here 中的代码,但指向现有的 K8S Vo
def volume_op_dag():
vop = dsl.VolumeOp(
name="shared-cache",
resource_name="shared-cache",
size="5Gi",
modes=dsl.VOLUME_MODE_RWO
)
卷共享缓存存在:
但是,当我运行管道时,会创建一个新卷:
我究竟做错了什么?我显然不想在每次运行管道时都创建一个新卷,而是挂载一个现有卷。
【问题讨论】:
标签:
kubeflow
kubeflow-pipelines
【解决方案1】:
看起来您正在尝试在 KubeFlow 管道中创建引用现有 Kubernetes (K8S) 卷的 VolumeOp。您可以通过在 VolumeOp 定义中将现有参数设置为 True 来执行此操作。
以下是如何修改代码以引用现有卷的示例:
def volume_op_dag():
vop = dsl.VolumeOp(
name="shared-cache",
resource_name="shared-cache",
size="5Gi",
modes=dsl.VOLUME_MODE_RWO,
existing=True
)
请记住,使用这样的现有卷可能不是 KubeFlow 管道的最佳实践,因为它可能会导致再现性和管道隔离问题。通常建议使用数据传递机制(例如工件或输出/输入参数)在管道组件之间交换数据。但是,如果您确实需要使用管道中的现有卷作为临时解决方案,上述代码应该可以帮助您在管道定义中引用它。