如何让多个 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 文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes - 如何让 Pod 的服务名称与

如何让一个 pod 与 Kubernetes 中的另一个 pod 联网? (简单的)

关于Kubernetes中Service Account的一些笔记:Pod内部如何访问K8s集群

关于Kubernetes中Service Account的一些笔记:Pod内部如何访问K8s集群

如何让 bash 脚本等到 kubernetes pod 重新启动?

kubernetes 五大核心资源