Skip to content

NFS Provisioner

The NFS Provisioner dynamically creates PersistentVolumes backed by an NFS share, providing the default storage class for the cluster.

Details

Field Value
Chart nfs-subdir-external-provisioner
Repository https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner
Version 4.0.18
Namespace nfs-provisioner (CreateNamespace=true)
Sync Wave -2

Key Configuration

  • NFS Server: 192.168.1.158 (Unifi NAS data export)
  • Mount Options: vers=3, hard, intr
  • StorageClass: nfs-client
    • Set as the cluster default storage class
    • Reclaim policy: Retain (volumes are preserved after PVC deletion)
    • Path pattern: ${.PVC.namespace}-${.PVC.name} (directories on the NFS share are named predictably by namespace and PVC name)

Cluster Integration

nfs-client is the default StorageClass, so any PVC without an explicit storageClassName is fulfilled by this provisioner. It is used extensively across the cluster:

  • Application configuration volumes (Sonarr, Radarr, Jellyfin, etc.)
  • Prometheus time-series data (20Gi)
  • Grafana dashboards and plugin storage (2Gi)
  • Loki log data (10Gi)
  • MinIO object storage (50Gi)

The provisioner deploys at sync wave -2 so that storage is available before the monitoring stack, backup services, and applications request PVCs at wave -1 and wave 0.

Upstream Documentation

https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner