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
- On the master node
sudo apt update
sudo apt install nfs-kernel-server -y
- 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
- Add Helm repo
helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
helm repo update
- Create the namespace
kubectl create ns nfs-provisioner
- 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.