0

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

  • 我的一个 google 文件存储实例可以拥有一个中央 nfs 吗?
  • 如何在文件存储实例中创建文件夹并让我的 pod 与它交谈而不受干扰?

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

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

4

2 回答 2

2

Filestore 卷支持 ReadWriteMany,因此您可以在多个 pod 上挂载相同的 PV 以进行写访问。您将创建一个 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 实例现在已安装在 pod/deployments 上,但您仍然需要使用自己的机制来确保 pod 不会破坏彼此的数据。这里有两个选项我会考虑:

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

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

于 2021-10-19T13:17:34.733 回答
2

除了加里的回答之外,无法进行分区的原因:

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

您的选择是:

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

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

于 2021-10-20T03:14:17.310 回答