Skip to main content

Proving it actually works

Storage you haven't tested is a rumour. The check is a throwaway claim:

kubectl apply -f - <<'YAML'
apiVersion: v1
kind: PersistentVolumeClaim
metadata: { name: nfs-dyn-test }
spec:
  accessModes: [ReadWriteMany]
  resources: { requests: { storage: 1Gi } }
YAML

No storageClassName — so it should use the default. Within a second it goes Bound, and a matching PersistentVolume appears pointing at 10.100.100.12:/srv/nfs/k8s with a freshly created subdirectory named after the volume. SSH to the NFS box and the directory is right there. Delete the claim and — because of reclaimPolicy: Delete — the subdirectory disappears again.

That round trip (claim → directory created → claim deleted → directory removed) proves the whole chain end to end: the controller saw the claim, the driver talked to the server, the node could mount it, and cleanup works.

Lesson learned: always test dynamic provisioning with a real PVC, and watch the server side too. A claim that goes Bound only proves Kubernetes is happy; SSHing in to see the directory appear and vanish proves the storage is actually doing what you think. Two different layers, both worth confirming.