Kindなど、Read Write ManyなPVが作れないKubernetes環境でRead Write ManyなPVを作れるようにするメモ。
NFS Ganesha server and external provisionerはInternal NFS Server兼NFS Provisionerとして利用できます。
このNFS Provisionerを使ってRead Write ManyでPVを作成できます。
Helmでインストールします。
helm repo add nfs-ganesha-server-and-external-provisioner https://kubernetes-sigs.github.io/nfs-ganesha-server-and-external-provisioner/
helm upgrade nfs-server-provisioner nfs-ganesha-server-and-external-provisioner/nfs-server-provisioner \
--set persistence.enabled=true \
--set persistence.size=10Gi \
--install \
-n nfs \
--create-namespace \
--wait
次のPodが作成されます。
$ kubectl get pod -n nfs
NAME READY STATUS RESTARTS AGE
nfs-server-provisioner-0 1/1 Running 0 33s
nfs
というStorageClassも作成されます。
$ kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
nfs cluster.local/nfs-server-provisioner Delete Immediate true 1m19s
standard (default) rancher.io/local-path Delete WaitForFirstConsumer false 25h
次のようなPVCを作成します。
kubectl apply -f- << EOF
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: test-dynamic-volume-claim
spec:
storageClassName: "nfs"
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
---
EOF
RWXでPVを作成できました。
$ kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
test-dynamic-volume-claim Bound pvc-1f062a6f-3955-427a-ae6e-8b25ff17e670 1Gi RWX nfs 31s
確認できたらPVCを削除します。
kubectl delete pvc test-dynamic-volume-claim