如何使用AWS EFS和ReadWriteManyconfiguration持久性卷索赔?

我有以下持续的音量和音量索赔:

kind: PersistentVolume apiVersion: v1 metadata: name: kloud spec: capacity: storage: 100Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain nfs: server: 172.21.51.42 path: / readOnly: false 

和:

 kind: PersistentVolumeClaim apiVersion: v1 metadata: name: kloud spec: accessModes: - ReadWriteMany resources: requests: storage: 100Gi 

nfs服务器是AWS EFS。 我特别ssh到k8s主,并检查我可以手动挂载NFS卷。 但是当我用kubectl创build卷和索赔时,它会无限期地悬挂在那里:

 $ kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE kloud Pending gp2 8s 

如果我将模式更改为ReadWriteOnce ,它按预期工作,不会挂起。

 $ kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE kloud Bound pvc-c9a01bff-94d0-11e7-8ed4-0aec4a0f734a 100Gi RWO gp2 

有什么我想念的吗? 我如何使用k8s和EFS创buildRWX索赔?

您需要在群集中设置EFS配置器。 挂载EFS仍然不支持默认的Kubernetes发行版本,因此您需要使用以下扩展名: https : //github.com/kubernetes-incubator/external-storage/tree/master/aws/efs

你需要设置它的存储类:

  kind: StorageClass apiVersion: storage.k8s.io/v1beta1 metadata: name: aws-efs provisioner: example.com/aws-efs 

然后写下这个类型的PVC:

 kind: PersistentVolumeClaim apiVersion: v1 metadata: name: efs annotations: volume.beta.kubernetes.io/storage-class: "aws-efs" spec: accessModes: - ReadWriteMany resources: requests: storage: 1Mi 

不要介意存储大小,虽然它不被EFS使用,但Kubernetes要求你设置一些东西来使其工作。