Warning
This article was automatically translated by OpenAI (gpt-4o). It may be edited eventually, but please be aware that it may contain incorrect information at this time.
Note on creating Read Write Many PVs in Kubernetes environments where Read Write Many PVs cannot be created, such as with Kind.
NFS Ganesha server and external provisioner can be used as an Internal NFS Server and NFS Provisioner.
You can create PVs with Read Write Many using this NFS Provisioner.
Install it with 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
The following Pod will be created.
$ kubectl get pod -n nfs
NAME READY STATUS RESTARTS AGE
nfs-server-provisioner-0 1/1 Running 0 33s
A StorageClass named nfs
will also be created.
$ 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
Create a PVC as follows.
kubectl apply -f- << EOF
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: test-dynamic-volume-claim
spec:
storageClassName: "nfs"
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
---
EOF
A PV with RWX was created.
$ 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
Delete the PVC once confirmed.
kubectl delete pvc test-dynamic-volume-claim