This is a guide for installing the generic NFS-CSI driver.
https://github.com/kubernetes-csi/csi-driver-nfs/blob/master/docs/install-csi-driver-v4.11.0.md
curl -skSL https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/v4.11.0/deploy/install-driver.sh | bash -s v4.11.0 --
# get status
watch -n 10 'kubectl -n kube-system get pod -o wide |grep csi-nfs'
https://github.com/kubernetes-csi/csi-driver-nfs/blob/master/deploy/example/README.md
cat << EOF | kubectl apply -f -
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-csi
provisioner: nfs.csi.k8s.io
parameters:
server: 192.168.1.178
share: /opt
# csi.storage.k8s.io/provisioner-secret is only needed for providing mountOptions in DeleteVolume
# csi.storage.k8s.io/provisioner-secret-name: "mount-options"
# csi.storage.k8s.io/provisioner-secret-namespace: "default"
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
mountOptions:
- nfsvers=4.1
---
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: nfs-csi-snapclass
annotations:
snapshot.storage.kubernetes.io/is-default-class: "false"
driver: nfs.csi.k8s.io
deletionPolicy: Delete
EOF
We need to have an image on StorageClass
cat << EOF | kubectl apply -f -
apiVersion: harvesterhci.io/v1beta1
kind: VirtualMachineImage
metadata:
name: nfsrocky94
namespace: default
annotations:
harvesterhci.io/storageClassName: nfs-csi
spec:
backend: cdi
displayName: nfsubuntu
retry: 3
sourceType: download
targetStorageClassName: nfs-csi
url: https://cloud-images.ubuntu.com/minimal/releases/noble/release/ubuntu-24.04-minimal-cloudimg-amd64.img
EOF
There is a good doc for troubleshooting : https://github.com/kubernetes-csi/csi-driver-nfs/blob/master/docs/csi-debug.md