web-dev-qa-db-ja.com

AWS EFSとReadWriteManyを使用して永続ボリュームクレームを設定するにはどうすればよいですか?

私は次の永続的なボリュームとボリュームの主張を持っています:

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サーバーはAWSEFSです。特にk8sマスターにSSHで接続し、NFSボリュームを手動でマウントできることを確認しました。しかし、kubectlを使用してボリュームとクレームを作成すると、保留中の状態で無期限にハングします。

$ 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を使用してRWXクレームを作成するにはどうすればよいですか?

11
Oz123

クラスターに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では、ストレージを機能させるために何かを設定する必要があります。

13
vascop