How to set up my nfs server

June 30 2025

Setting up my nfs server for k3s

Prerequisites

  • Have a k3s cluster with one master node and at least one control node
  • Have helm installed
  1. On the master node
sudo apt update
sudo apt install nfs-kernel-server -y
  1. create and export directory
sudo mkdir -p /srv/nfs/k3s
sudo chown nobody:nogroup /srv/nfs/k3s
sudo chmod 777 /srv/nfs/k3s

edit /etc/exports to allow access:

/srv/nfs/k3s *(rw,sync,no_subtree_check,no_root_squash)
sudo exportfs -a
sudo systemctl restart nfs-kernel-server
  1. Add Helm repo
helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
helm repo update
  1. Create the namespace
kubectl create ns nfs-provisioner
  1. Install Provisioner
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
  --namespace nfs-provisioner \
  --set nfs.server=<NFS_SERVER_IP> \
  --set nfs.path=/srv/nfs/k3s \
  --set storageClass.name=nfs-client \
  --set storageClass.defaultClass=true

How to check that node can access file share

ssh <control_node>
sudo mkdir -p /mnt/test-nfs
sudo mount <root_ip>:/srv/nfs/k3s /mnt/test-nfs
ls /mnt/test-nfs
# check the files show
sudo umount /mnt/test-nfs

Go back home.