【发布时间】:2018-05-30 06:33:09
【问题描述】:
我正在尝试使用 ksonnet 原型将本地目录挂载到 kubeflow 中部署的组件中。
【问题讨论】:
标签: kubernetes ksonnet kubeflow
我正在尝试使用 ksonnet 原型将本地目录挂载到 kubeflow 中部署的组件中。
【问题讨论】:
标签: kubernetes ksonnet kubeflow
没有办法将本地目录挂载到 Kubernetes pod 中(毕竟 kubeflow 和 ksonnet 只是创建 pod 和其他 Kubernetes 资源)。
如果您希望您的文件在 Kubernetes 中可用,我可以考虑两种选择:
创建自定义 docker 映像,复制所需的文件夹,并将其推送到注册表。 Kubeflow 具有自定义要部署的图像的参数。
使用 NFS。这样您就可以将 NFS 卷挂载到本地以及 Pod 中。为此,您应该修改 ksonnet 代码,因为在上一个稳定版本中它没有实现。
如果您提供有关您尝试部署的组件以及您正在使用的云提供商的更多信息,我可以为您提供更多帮助
【讨论】:
如果本地目录是指节点上的本地目录,则可以使用 HostPath 或 Local @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 也可作为Volume 或Persistent Volume 使用(访问模式:ReadWriteOnce、ReadOnlyMany、ReadWriteMany)
glusterfs 卷允许将 Glusterfs(一种开源网络文件系统)卷挂载到您的 Pod 中。与删除 Pod 时会擦除的 emptyDir 不同,glusterfs 卷的内容被保留并且卷只是被卸载。这意味着 glusterfs 卷可以预先填充数据,并且可以在 Pod 之间“传递”数据。 GlusterFS 可以同时被多个写入器挂载。
有关详细信息,请参阅GlusterFS example。
【讨论】: