私は次の永続的なボリュームとボリュームの主張を持っています:
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クレームを作成するにはどうすればよいですか?
クラスターに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では、ストレージを機能させるために何かを設定する必要があります。