如何在 Kubeflow Pipeline 中挂载 Google Bucket?

问题描述

我使用 KF 在 GCP 中的虚拟机上启动并运行了一个 KubeFlow 管道。 我使用带有图像 jupyter-kale 和 python 的 Jupyter Notebook 服务器创建管道。 管道的第一部分是进行数据准备,它下载图像并将它们保存到 PVC。这一切都很好,但我的存储空间用完了,所以我决定将下载的图像直接保存到谷歌存储桶,而不是使用 PVC。 我修改了我的管道,如下面的代码所示:

import kfp
import kfp.dsl as dsl
import kfp.onprem as onprem
import kfp.compiler as compiler
import os

@dsl.pipeline(
  name='try_mount',description='...'
)

def one_d_pipe(pvc_name = "gs://xxx-images/my_folder/"):
    
    trymount = dsl.ContainerOp(
        name="trymount",#image = "sprintname3:0.2.0",image = "eu.gcr.io/xxx-admin/kubeflow/trymount_1:0.1"
    )
    
    steps = [trymount]
    for step in steps:
        step.apply(onprem.mount_pvc(pvc_name,"gs://xxx-images/my_folder/",'/home/jovyan/data'))

但是此代码在开始说卷具有无效值并且无法找到后立即导致错误消息:

此步骤处于错误状态并显示以下消息:Pod "try-mount-75vrt-3151677017" is invalid: [spec.volumes[2].name: Invalid value: "gs://xxx-images/my_folder/ ":DNS-1123 标签必须由小写字母数字字符或“-”组成,并且必须以字母数字字符开头和结尾(例如“我的姓名”或“123-abc”,用于验证的正则表达式为“a” -z0-9?')、spec.containers[0].volumeMounts[3].name:未找到:“gs://xxx-images/my_folder/”、spec.containers[1].volumeMounts[0]。名称:未找到:“gs://xxx-images/my_folder/”]

所以,我的问题是:

  • 如何在 Kubeflow Pipelines 中挂载谷歌存储桶?

解决方法

您不能将存储桶安装为卷。它不是文件系统。但是,我确信您可以通过 use gcsfuse 在您的 VM 上作弊。

  • 在您的虚拟机上,使用保险丝挂载 GCS 存储桶
gcsfuse xxx-images /path/to/mount-gcs
  • 然后在您的代码中,使用此目录。无需挂载,GCS 已通过 GCSFuse 挂载。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...