我正在尝试使用 ksonnet 原型将本地目录安装到 kubeflow 中部署的组件中。
2 回答
无法将本地目录挂载到 Kubernetes pod 中(毕竟 kubeflow 和 ksonnet 只是创建 pod 和其他 Kubernetes 资源)。
如果您希望您的文件在 Kubernetes 中可用,我可以考虑两种选择:
创建一个自定义 docker 映像,复制您想要的文件夹,并将其推送到注册表。Kubeflow 具有用于自定义要部署的图像的参数。
使用 NFS。这样您就可以将 NFS 卷挂载到本地以及 Pod 中。为此,您应该修改 ksonnet 代码,因为在上一个稳定版本中它没有实现。
如果您提供有关您尝试部署的组件以及您正在使用的云提供商的更多信息,我可以为您提供更多帮助
如果本地目录是指节点上的本地目录,则可以使用HostPath或本地 卷功能在 pod 内的节点文件系统上挂载目录。
hostPath卷将文件或目录从主机节点的文件系统安装到您的 Pod 中。这不是大多数 Pod 需要的东西,但它为某些应用程序提供了强大的逃生舱口。
本地卷表示已安装的本地存储设备,例如磁盘、分区或目录。
本地卷只能用作静态创建的 PersistentVolume。尚不支持动态配置。
与hostPath卷相比,本地卷可以以持久且可移植的方式使用,而无需手动将 Pod 调度到节点,因为系统通过查看 PersistentVolume 上的节点亲和性来了解卷的节点约束。
例如:
# 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也可用作卷或持久卷(访问模式:ReadWriteOnce、ReadOnlyMany、ReadWriteMany)
Glusterfs卷允许将Glusterfs(一种开源网络文件系统)卷挂载到您的 Pod 中。与删除 Pod 时会擦除的 emptyDir 不同,glusterfs 卷的内容被保留并且卷只是被卸载。这意味着 glusterfs 卷可以预先填充数据,并且可以在 Pod 之间“传递”数据。GlusterFS 可以同时被多个写入者挂载。
有关更多详细信息,请参阅GlusterFS 示例。