NFS Server adalah komponen perangkat lunak atau layanan yang memungkinkan untuk membagikan sistem file melalui protokol NFS (Network File System). Sebuah NFS Server menyediakan akses jaringan ke sistem file yang disimpan di server kepada klien yang terhubung melalui jaringan.
Dengan menggunakan NFS Server, klien yang terhubung ke jaringan dapat memanfaatkan sistem file yang di-host oleh server NFS seolah-olah mereka berada pada sistem lokal mereka sendiri. Ini memungkinkan untuk berbagi data dan sistem file secara efisien di antara beberapa mesin atau perangkat yang terhubung dalam jaringan.
NFS Server menyediakan mekanisme ekspor file, di mana administrator server dapat menentukan direktori mana yang akan dibagikan dan kepada klien mana aksesnya diizinkan. Klien dapat melakukan mounting (memasang) direktori yang dibagikan dari server NFS ke dalam sistem file mereka sendiri, sehingga dapat mengakses, membaca, menulis, dan melakukan operasi lainnya pada file dan direktori tersebut seolah-olah mereka berada pada sistem lokal.
Dengan menggunakan NFS, pengguna dapat memanfaatkan manfaat bersama dari penyimpanan dan pengelolaan data terpusat, serta mengizinkan akses file yang efisien dan terstruktur melalui jaringan.
NFS di dalam cluster Kubernetes merujuk pada penggunaan server NFS (Network File System) untuk menyediakan persistent volume (PV) dan persistent volume claim (PVC) kepada aplikasi yang berjalan di dalam cluster. Dalam konteks ini, server NFS digunakan sebagai penyimpanan bersama yang dapat diakses oleh banyak pod di dalam cluster.
Dalam Kubernetes, penggunaan NFS sebagai penyimpanan persisten memungkinkan aplikasi untuk menyimpan dan membagikan data di antara pod-pod yang berjalan di dalam cluster. Beberapa keuntungan penggunaan NFS di cluster Kubernetes termasuk:
Penyimpanan Bersama: Dengan menggunakan server NFS, beberapa pod dapat mengakses dan membagikan data yang disimpan di dalam sistem file yang sama.
Persistensi: Data yang disimpan di NFS akan bertahan bahkan jika pod atau wadah yang berjalan di dalam cluster dihentikan atau dimulai kembali. Ini memungkinkan aplikasi untuk mempertahankan data mereka dalam skenario tersebut.
Skalabilitas: Server NFS dapat dikonfigurasi untuk menangani sejumlah besar permintaan dari pod-pod yang berjalan di dalam cluster Kubernetes, sehingga memungkinkan skala aplikasi yang lebih besar.
Untuk menggunakan NFS di dalam cluster Kubernetes, Anda perlu mengonfigurasi objek StorageClass untuk menunjuk ke server NFS sebagai penyedia penyimpanan, dan kemudian membuat persistent volume claim (PVC) yang mengikat ke PV dengan tipe NFS. PV dan PVC ini dapat digunakan oleh pod-pod di dalam cluster untuk menyimpan dan mengakses data yang persisten.
Penggunaan NFS di cluster Kubernetes dapat memberikan fleksibilitas dan kemudahan dalam mengelola penyimpanan persisten bagi aplikasi yang berjalan di dalam cluster. Berikut sedikit pembahasan NFS Server dan Fungsi NFS Server di cluster kubernetes.
Berikut topologi NFS provisioning untuk cluster kubernetes

NFS Setup
My Environment
| Hostname | IP |
|---|---|
| k8s-loadbalancer1 | 10.10.10.9 |
| k8s-loadbalancer2 | 10.10.10.10 |
| k8s-master1 | 10.10.10.11 |
| k8s-master2 | 10.10.10.12 |
| k8s-master3 | 10.10.10.13 |
| k8s-worker1 | 10.10.10.14 |
| k8s-worker2 | 10.10.10.15 |
| k8s-worker3 | 10.10.10.16 |
| k8s-vrrp | 10.10.10.50 |
Disini saya akan membuat skenario master1 dijadikan sebagai NFS Server
Install OS packages
Install di node yang mau di jadikan NFS
| |
Buat directory untuk di pakai penyimpanan sebagai NFS Server
| |
Export Directory
| |
Sesuaikan IP dengan Subnet kalian
Setelah directory di export restart NFS Server tersebut
| |
Cek hasil export tadi
| |
Setelah setup nfs-server sudah di lakukan . Install NFS Client di setiap worker node
| |
Cek hasil export tadi di worker node
| |
Install deployment NFS menggunakan helm , apabila tidak punya helm3 silahkan install terlebih dahulu
Jalankan di Node Master
| |
Tambah repo ke helm
| |
Install chart nfs yang telah di tambahkan repo nya tadi
Silahkan sesuaikan dengan info cluster masing — masing punya kalian
| |
Setelah pod running jadikan Storage Class tersebut sebagai Storage Class default
| |
Untuk cek nama Storage class bisa cek dengan command
| |
Setelah set default storage class , berikut output apabila action tersebut berhasil di lakukan

Untuk pengujian Storage class dan NFS server itu berjalan . Buat lah pvc dan storage class nya mengarah ke storage class yang telah di buat
| |
Deploy PVC tersebut
| |
Check apakah pvc itu telah bound ke storage class atau belum
| |

Validasi hasil pvc tersebut dengan deploy sebuah pod nginx dan di arahkan ke pvc yang sudah di buat tadi
| |
Setelah apply manifest tersebut , lakukan step ini untuk provisioning pod dengan pvc tadi
| |

Voilaaa , provisioning NFS Server di Cluster Kubernetes telah berhasil. Apabila anda mau cek hasil yang tadi dibuat , bisa di lihat data yang ada di pvc tadi di instance yang di install nfs server
| |

Dan apabila anda melihat hasil pvc nginx tadi , maka output nya akan sama seperti test curl ke pod tersebut
| |

Mohon maaf apabila ada kalimat yang susah dipaham / kurang mengerti / terlalu berbelit2 , sekian ges chersss 🍻.
