是否可以在同一个文件存储实例上挂载两个不同的文件夹?

is it possible to have two different folders to mount on the same filestore instance?

我正在尝试将文件存储实例连接到我的 GKE 集群。我的 GKE 集群上有两个部署,写入两个单独的卷声明。我想知道的是:

我看到的另一个选择是创建两个不同的文件存储——这似乎解决了我的问题,但我目前正在设置我的集群架构,这似乎是一种巨大的资源浪费(我有大约 1TB 的数据,但是我的 pods 每个使用大约 50GB - 所以我在考虑分区,但 GCP 文档太神秘了)

也欢迎对我正在努力实现的目标提出任何其他建议:)

文件存储卷支持 ReadWriteMany,因此您可以将同一个 PV 安装在多个 pods 上以进行写访问。您将创建一个 PersistentVolumeClaim,并将 accessModes 设置为 ReadWriteMany:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: sharedpvc
spec:
  accessModes:
  - ReadWriteMany
  storageClassName: standard-rwx
  resources:
    requests:
      storage: 1Ti

然后将其安装到您的每个部署中

volumes:
  - name: shared
    persistentVolumeClaim:
      claimName: sharedpvc

所以同一个 Filestore 实例现在挂载在 pods/deployments 上,但您仍然需要使用自己的机制来确保 pods 不会破坏彼此的数据。这里有两个选项我会考虑:

  • 为每个部署编写的所有文件使用单独的前缀
  • 在卷内为每个部署创建一个目录

您不能创建单独的分区,也不能限制每个部署的存储大小。但是通过这种方式,您可以将多个 pods 写入同一个实例,而不是创建多个 1TB 实例。

除了Gari的回答,无法分区的原因:

澄清一下,Google Cloud Filestore 是一个 NFS 服务器。因此,它不是“分区的”(只有 block devices 是),而是具有“导出共享”的概念,每个共享可以由一个或多个客户端挂载。安装后,共享显示为客户端的单个文件系统目录。

您的选择是:

  1. 使用单个共享,将其作为 PV 附加到 Kubernetes 中,然后在该单个共享中创建目录以匹配其 Pod 结构(Gari 的回答);或
  2. 使用多个共享,每个对应一组 Pods 或服务,并将每个共享作为不同的 PV 附加到 K8s(根据您的用例不理想)。

这里的关键点是:所有 Filestore 共享都是 NFS 导出,因此可以从 K8s 中将它们视为相关类型的 PV。