-1

我在带有 KF 的 GCP 中的 VM 上启动并运行了一个 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/": a DNS-1123 标签必须由小写字母数字字符或“-”组成,并且必须以字母数字字符开头和结尾(例如“my-name”或“123-abc”,用于验证的正则表达式为“a-z0-” 9?'),spec.containers[0].volumeMounts[3].name:未找到:“gs://xxx-images/my_folder/”,spec.containers[1].volumeMounts[0].name:没有找到:“gs://xxx-images/my_folder/”]

所以,我的问题:

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

1 回答 1

3

您不能将存储桶安装为卷。它不是文件系统。但是,我确信您可以通过在虚拟机上使用 gcsfuse来作弊。

  • 在您的虚拟机上,使用 fuse 挂载 GCS 存储桶
gcsfuse xxx-images /path/to/mount-gcs
  • 然后在您的代码中,使用此目录。无需安装,GCS 已经安装了 GCSFuse。
于 2021-01-05T19:31:17.550 回答