【问题标题】:How to mount local volume to ksonnet component deployed in kubeflow如何将本地卷挂载到部署在 kubeflow 中的 ksonnet 组件
【发布时间】:2018-05-30 06:33:09
【问题描述】:

我正在尝试使用 ksonnet 原型将本地目录挂载到 kubeflow 中部署的组件中。

【问题讨论】:

    标签: kubernetes ksonnet kubeflow


    【解决方案1】:

    没有办法将本地目录挂载到 Kubernetes pod 中(毕竟 kubeflow 和 ksonnet 只是创建 pod 和其他 Kubernetes 资源)。

    如果您希望您的文件在 Kubernetes 中可用,我可以考虑两种选择:

    1. 创建自定义 docker 映像,复制所需的文件夹,并将其推送到注册表。 Kubeflow 具有自定义要部署的图像的参数。

    2. 使用 NFS。这样您就可以将 NFS 卷挂载到本地以及 Pod 中。为此,您应该修改 ksonnet 代码,因为在上一个稳定版本中它没有实现。

    如果您提供有关您尝试部署的组件以及您正在使用的云提供商的更多信息,我可以为您提供更多帮助

    【讨论】:

    • 我正在部署 openmpi。如果我可以挂载 glusterfs,这对于我的用例也足够了。
    • 是的,你当然可以挂载 glusterfs,就像任何其他卷一样。你需要编辑 kubeflow 代码,特别是这个文件和部分:github.com/kubeflow/kubeflow/blob/… 而不是 emptydir 卷,设置你的 glusterfs 卷。
    • 谢谢。有效。但是,这不是应该用 ksonnet 配置的吗!
    • 是的,但目前不是。如果你这样做并测试它,你总是可以提出拉取请求,这将是一个很棒的功能
    【解决方案2】:

    如果本地目录是指节点上的本地目录,则可以使用 HostPathLocal @987654321 在 pod 内的节点文件系统上挂载目录@ 特征。

    hostPath 卷将文件或目录从主机节点的文件系统挂载到您的 Pod 中。这不是大多数 Pod 需要的东西,但它为某些应用程序提供了一个强大的逃生舱。

    本地卷表示已安装的本地存储设备,例如磁盘、分区或目录。

    本地卷只能用作静态创建的 PersistentVolume。尚不支持动态配置。

    hostPath 卷相比,本地卷可以以持久且可移植的方式使用,而无需手动将 Pod 调度到节点,因为系统通过查看节点亲和性来了解卷的节点约束持久卷。

    例如:

    # HostPaht Volume example
    apiVersion: v1
    kind: Pod
    metadata:
      name: test-pd
    spec:
      containers:
      - image: k8s.gcr.io/test-webserver
        name: test-container
        volumeMounts:
        - mountPath: /test-pd
          name: test-volume
      volumes:
      - name: test-volume
        hostPath:
          # directory location on host
          path: /data
          # this field is optional
          type: Directory
    
    # local volume example (beta in v1.10)
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: example-pv
    spec:
      capacity:
        storage: 100Gi
      # volumeMode field requires BlockVolume Alpha feature gate to be enabled.
      volumeMode: Filesystem
      accessModes:
      - ReadWriteOnce
      persistentVolumeReclaimPolicy: Delete
      storageClassName: local-storage
      local:
        path: /mnt/disks/ssd1
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
              - example-node
    

    GlusterFS 也可作为VolumePersistent Volume 使用(访问模式:ReadWriteOnce、ReadOnlyMany、ReadWriteMany)

    glusterfs 卷允许将 Glusterfs(一种开源网络文件系统)卷挂载到您的 Pod 中。与删除 Pod 时会擦除的 emptyDir 不同,glusterfs 卷的内容被保留并且卷只是被卸载。这意味着 glusterfs 卷可以预先填充数据,并且可以在 Pod 之间“传递”数据。 GlusterFS 可以同时被多个写入器挂载。

    有关详细信息,请参阅GlusterFS example

    【讨论】:

      猜你喜欢
      • 2021-10-30
      • 2021-05-15
      • 1970-01-01
      • 2021-07-14
      • 2015-07-14
      • 1970-01-01
      • 2020-03-02
      • 2021-04-11
      • 1970-01-01
      相关资源
      最近更新 更多