Menginstall NFS CSI Driver ke cluster: prasyarat NFS server dan nfs-common di tiap node, instalasi via Helm atau manifest kubectl, lalu memverifikasi node plugin, controller beserta sidecars, dan registrasi CSIDriver

NFS server sudah hidup dan terverifikasi. Langkah berikutnya adalah menjembatani NFS dengan Kubernetes: NFS CSI Driver. Tanpa driver ini, cluster tidak bisa membuat PV secara dinamis — kalian harus membuat semua PV manual (yang akan kita pelajari di episode 6 sebagai teknik statis).
Di episode 4 ini kita menginstall driver dan, yang tidak kalah penting, memverifikasi bahwa setiap komponen benar-benar berfungsi: node plugin di semua worker, controller beserta sidecars, dan pendaftaran CSIDriver.
Sebelum install, pastikan dua hal:
nfs-common (Debian/Ubuntu) atau nfs-utils (RHEL/Fedora). Ini dibutuhkan karena worker node akan melakukan system call mount NFS.sudo apt install nfs-commonsudo dnf install nfs-utilsCara paling nyaman dan mudah di-reproduce adalah Helm. Driver menyediakan chart resmi:
helm repo add csi-driver-nfs https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/charts
helm repo updatehelm install csi-driver-nfs csi-driver-nfs/csi-driver-nfs \
--namespace kube-systemChart memasang semua objek secara otomatis: CSIDriver, StorageClass contoh (bernama nfs-csi), controller Deployment, dan DaemonSet node.
Bila kalian tidak memakai Helm, repository driver menyediakan manifest mentah:
git clone https://github.com/kubernetes-csi/csi-driver-nfs
cd csi-driver-nfs
kubectl apply -f deploy/kubernetesRute ini memberi kontrol penuh, tetapi mengharuskan kalian menjaga versi manifest secara manual.
Tip
Untuk series ini kita memakai Helm — konsisten dan mudah untuk proses upgrade di episode 25, cukup helm upgrade untuk memperbarui driver tanpa menebak versi manifest.
Node plugin (csi-nfs-node) memastikan setiap node bisa melakukan mount NFS ke volume:
kubectl -n kube-system get pod -l app=csi-nfs-node -o wideOutput harus menunjukkan Pod siap (Running/READY 1/1) di setiap worker. Jumlahnya sama dengan jumlah node pekerja.
Controller menangani provisioning dan attach. Cek health-nya:
kubectl -n kube-system get pod -l app=csi-nfs-controller -o wide
kubectl -n kube-system get deployment csi-nfs-controllerPod controller berisi container utama nfs ditambah sidecars (csi-provisioner, csi-attacher, csi-resizer). Semua harus READY.
Registrasi minimal satu objek CSIDriver dengan nama nfs.csi.k8s.io:
kubectl get csidriver nfs.csi.k8s.ioNAME ATTACHREQUIRED PODINFOONMOUNT STORAGECAPACITY TOKENREQUESTS REQUIRESREPUBLISH
nfs.csi.k8s.io false true false <none> falseATTACHREQUIRED: false menunjukkan NFS tidak perlu detach/attach dalam arti block-level — volume di-mount langsung oleh node plugin.
Important
Jika kubectl -n kube-system get pod -l app=csi-nfs-node tidak menampilkan Pod di sebuah worker, atau status Pod ImagePullBackOff, jangan lanjut — driver belum sehat di semua node. Cek kubectl -n kube-system describe pod dan pastikan versi image driver sesuai yang dibutuhkan kubelet.
Pada episode 4 ini, kalian telah memasang dan memverifikasi NFS CSI Driver:
Inti yang harus dibawa pulang:
nfs-common/nfs-utils terpasang di setiap node.helm install csi-driver-nfs atau manifest kubectl apply -f deploy/kubernetes.csi-nfs-node harus siap di semua worker; controller + sidecars READY.kubectl get csidriver nfs.csi.k8s.io membuktikan driver terdaftar.ATTACHREQUIRED: false — karakteristik filesystem (bukan block) mengurangi kompleksitas attach.Di episode 5 selanjutnya kita akan membuat StorageClass nfs-rwx dan dynamic provisioning: manifest StorageClass, parameter subDir untuk isolasi per-PVC, verifikasi volume, serta perilaku reclaim dan volume expansion. Sampai jumpa di episode 5!