【问题标题】:How to copy home directory file into new persistent volume with Kubernetes?如何使用 Kubernetes 将主目录文件复制到新的持久卷中?
【发布时间】:2019-06-21 17:57:48
【问题描述】:

我有一个 JupyterHub Kubernetes 部署。

当我创建并附加一个持久卷 (PV) 时,它会清除作为我的映像一部分的主目录。它将它替换为一个空的主目录,其中写入的任何内容都将按预期保留(这很好)。

如何将图像主文件夹中的文件放入 PV 主文件夹?

这是一个example from the docs,不幸的是它似乎只从新的 PV(不是图像)复制:

singleuser:
  lifecycleHooks:
    postStart:
      exec:
        command: ["cp", "-a", "src", "target"]

这是我的单用户配置:

singleuser:
  image:
    name: myimage
    tag: latest
    pullPolicy: Always
  storage:
    capacity: 10Gi
    dynamic:
      storageClass: standard

【问题讨论】:

    标签: docker kubernetes jupyterhub persistent-volumes


    【解决方案1】:

    以上应该可以正常工作。

    您可能正在将 PV 安装在与容器相同的主目录上。您可以将 PV 挂载到不同的目录并进行复制,或者创建一个新映像,其中您的数据未存储在主目录中。这是一个如何使用mountPath的例子:

    apiVersion: v1
    kind: Pod
    metadata:
      name: jypyterhuyb
      namespace: default
    spec:
      volumes:
      - name: myvol
        ...
      containers:
      - name: jypyter
        image: "jypytercontainer"
        volumeMounts:
        - name: myvol
          mountPath: /mnt/mypath
    

    【讨论】:

    • 这就是我的最终解决方案的样子 1- 将文件存储在图像上不存在的文件夹中(如 /tmp)。使用 singleuser:storage:homeMountPath 在 home 上挂载 PV。然后使用lifecycleHooks:postStart:exec:command 将文件从/tmp 复制到主目录。
    • 我从这里获取了我的命令格式以在生命周期挂钩中运行脚本;如果您有多个命令,请不要忘记分号:stackoverflow.com/questions/39436845/…
    • 我也面临同样的问题,但我不想手动复制文件
    猜你喜欢
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    相关资源
    最近更新 更多