我有以下持续的音量和音量索赔:
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要求你设置一些东西来使其工作。