IK.AM


Dev > CaaS > Kubernetes > NFS

Note on Creating Read Write Many PVs in Kubernetes Environments Where Read Write Many PVs Cannot Be Created

Created on Tue Sep 05 2023 • Last Updated on Tue Sep 05 2023N/A Views

🏷️ Kubernetes | kind | NFS | NFS Ganesha server and external provisioner

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
Found a mistake? Update the entry.