如何让多个 pod 访问 Kubernetes 中现有的 NFS 文件夹?
Posted
技术标签:
【中文标题】如何让多个 pod 访问 Kubernetes 中现有的 NFS 文件夹?【英文标题】:How to have multiple pods access an existing NFS folder in Kubernetes? 【发布时间】:2019-08-22 10:12:33 【问题描述】:我在网络上有一个 TFRecords 文件夹,我想向多个 pod 公开。该文件夹已通过 NFS 导出。
我尝试创建一个持久卷,然后创建一个持久卷声明。但是,这只会在 NFS 挂载内创建一个文件夹,这是我不想要的。相反,我想用 TFRecords 让 Pod 访问文件夹。
我已经列出了 PV 和 PVC 的清单。
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-tfrecord-pv
spec:
capacity:
storage: 30Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
nfs:
path: /media/veracrypt1/
server: 1.2.3.4
readOnly: false
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-tfrecord-pvc
namespace: default
spec:
accessModes:
- ReadWriteMany
storageClassName: nfs-tfrecord
resources:
requests:
storage: 1Gi
【问题讨论】:
您是否在集群上安装了 nfs-client-provisioner? 是的。所有 pod 都可以看到共享的空文件夹。 那么你在配置中为 nfs 根目录设置了什么路径。例如,默认值为/srv
我将它设置为 /mmt/data
【参考方案1】:
我想通了。问题是我以错误的方式看待问题。我不需要任何配置。相反,我们需要的是简单地将 NFS 卷挂载到容器中:
kind: Pod
apiVersion: v1
metadata:
name: pod-using-nfs
spec:
containers:
- name: app
image: alpine
volumeMounts:
- name: data
mountPath: /mnt/data
command: ["/bin/sh"]
args: ["-c", "sleep 500000"]
volumes:
- name: data
nfs:
server: 1.2.3.4
path: /media/foo/DATA
【讨论】:
以上是关于如何让多个 pod 访问 Kubernetes 中现有的 NFS 文件夹?的主要内容,如果未能解决你的问题,请参考以下文章
如何让一个 pod 与 Kubernetes 中的另一个 pod 联网? (简单的)
关于Kubernetes中Service Account的一些笔记:Pod内部如何访问K8s集群
关于Kubernetes中Service Account的一些笔记:Pod内部如何访问K8s集群