如何在GKE中使用ReadWriteMany创建持久卷声明?

lee*_*n24 4 google-compute-engine google-cloud-platform kubernetes google-kubernetes-engine

使用ReadWriteMany将卷附加到多个Pod来创建持久卷声明的最佳方法是什么?

根据https://kubernetes.io/docs/concepts/storage/persistent-volumes中的支持表,GCEPersistentDisk本机不支持ReadWriteMany。

在GCP GKE世界中工作时最好的方法是什么?我应该使用CephFS或Glusterfs等群集文件系统吗?是否有关于生产准备就绪的建议?

我能够按照以下步骤配置NFS Pod部署-https: //medium.com/platformer-blog/nfs-persistent-volumes-with-kubernetes-a-case-study-ce1ed6e2c266但它似乎有点哈克并增加了另一层复杂性。它似乎也只允许一个副本(这是有意义的,因为磁盘无法多次安装),因此,如果/当Pod发生故障时,我的持久存储也将恢复。

Ant*_*ine 15

现在可以使用Cloud Filestore

首先创建一个 Filestore 实例。

gcloud filestore instances create nfs-server
    --project=[PROJECT_ID]
    --zone=us-central1-c
    --tier=STANDARD
    --file-share=name="vol1",capacity=1TB
    --network=name="default",reserved-ip-range="10.0.0.0/29"
Run Code Online (Sandbox Code Playgroud)

然后在 GKE 中创建一个持久卷。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: fileserver
spec:
  capacity:
    storage: 1T
  accessModes:
  - ReadWriteMany
  nfs:
    path: /vol1
    server: [IP_ADDRESS]
Run Code Online (Sandbox Code Playgroud)

[IP_ADDRESS] 在文件存储实例详细信息中可用。

您现在可以请求持久卷声明。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: fileserver-claim
spec:
  accessModes:
  - ReadWriteMany
  storageClassName: "fileserver"
  resources:
    requests:
      storage: 100G
Run Code Online (Sandbox Code Playgroud)

最后,将卷挂载到您的 pod 中。

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my container
    image: nginx:latest
    volumeMounts:
    - mountPath: /workdir
      name: mypvc
  volumes:
  - name: mypvc
    persistentVolumeClaim:
      claimName: fileserver-claim
      readOnly: false
Run Code Online (Sandbox Code Playgroud)

解决方案详述如下:https : //cloud.google.com/filestore/docs/accessing-fileshares

  • 请注意此 https://cloud.google.com/filestore/docs/service-tiers 上的定价可能相关。HDD 的起价为 204 美元,SDD 的起价为 758 美元,因此人们(像我一样)可以认为它绝对不可行。 (8认同)
  • 是否可以“拆分”1TB 文件存储以用于不同的集群或部署?我注意到在 pvc 上您请求 100GB 的存储空间。这到底要做什么?在 [IP_ADDRESS]/vol1/share1 下创建一个 100GB 的共享?我可以创建另一个 200GB 的 pvc 以便将其安装在 [IP_ADDRESS]/vol1/share2 下的另一个部署中吗?谢谢 (3认同)

Daz*_*kin 5

我同意这令人失望,但这是由于使用了永久磁盘而导致无法以读写方式附加到多个实例的结果。

我在使用NFS以及您描述的限制方面取得了成功。

如您所说,您也可以使用Gluster或类似工具。

尽管是托管的Google Cloud替代方案,但更昂贵的方法是Cloud Filestore:https ://cloud.google.com/filestore/docs/accessing-fileshares

您的问题表明您需要类似NFS的语义,但是,如果不需要,则可以考虑使用Google Cloud Storage。