Praktik pertama membangun shared storage: menginstall nfs-kernel-server, membuat direktori export, menyusun /etc/exports beserta penjelasan flag, menyalakan service, dan memverifikasi dari sisi client dengan showmount serta mount uji

Pada episode sebelumnya kita membahas konsep NFS dan CSI. Sekarang saatnya hands-on: kita akan menyiapkan NFS Server yang akan menjadi tulang punggung shared storage untuk seluruh cluster. Ini adalah langkah pertama yang paling konkret — dan paling sering salah — karena seluruh system storage di atasnya bergantung pada ekspor yang benar.
Mengapa episode ini penting dikuasai? Karena NFS Server adalah pusat segalanya di arsitektur kita: semua worker node akan mount ke direktori yang ia ekspor. Kesalahan kecil seperti flag ekspor yang keliru atau service yang tidak menyala akan menghasilkan gejala yang membingungkan — PVC Pending, Pod MountFailed, atau I/O yang menggantung — yang baru kalian pahami setelah episode 24.
Sebelum menginstall, pastikan IP server sudah statis dan direncanakan untuk menjadi penyedia storage cluster. Lalu install paket sesuai distro:
sudo apt update
sudo apt install nfs-kernel-serversudo dnf install nfs-utilsBuat direktori yang akan diekspor, lalu berikan owner nobody:nogroup. Mengapa nobody? Karena ini adalah identitas default untuk user yang di-squash (dipetakan) oleh NFS saat akses tidak dikenal — detail lengkapnya di episode 13.
sudo mkdir -p /srv/k8s-shared
sudo chown nobody:nogroup /srv/k8s-shared
sudo chmod 755 /srv/k8s-sharedFile /etc/exports adalah daftar direktori yang boleh diakses client. Tambahkan baris berikut:
# documentRoot tidak berlaku di NFS; ini daftar export
/srv/k8s-shared *(rw,sync,no_subtree_check,no_root_squash,insecure)Breakdown setiap flag:
rw — client boleh membaca dan menulis.sync — server menulis ke disk sebelum merespons request (lebih aman daripada async).no_subtree_check — perbaikan keandalan untuk direktori yang sering berubah; menghindari pemberitahuan perubahan subtree.no_root_squash — root di dalam container tidak di-squash ke nobody, sehingga proses berjalan sebagai root (UID 0) bisa menulis. Ini kelonggaran teknis yang kita butuh di lab; pembahasan keamanan dan alternatif all_squash ada di episode 13.insecure — mengizinkan mount dari port di atas 1024, yang umum di NFS client modern.Aplikasikan ekspor:
sudo exportfs -ra
showmount -e localhostexportfs -ra membaca ulang /etc/exports tanpa merestart service, dan showmount -e localhost menampilkan daftar ekspor.
Warning
Gunakan * hanya di lingkungan lab. Ekspor dengan * mengizinkan siapa pun di jaringan yang bisa reach server untuk mount. Di episode 13 kita ganti dengan daftar IP worker yang spesifik.
Aktifkan service agar menyala otomatis saat boot, lalu cek statusnya:
sudo systemctl enable --now nfs-server
sudo systemctl status nfs-serverPada RHEL, service-nya bernama nfs-server juga. Pastikan firewall mengizinkan port NFS — di episode 14 kita bahas port mana saja yang perlu dibuka.
Verifikasi dari sisi client (salah satu worker node atau workstation):
showmount -e <nfs-server-ip>
sudo mkdir -p /mnt/k8s-shared
sudo mount -t nfs <nfs-server-ip>:/srv/k8s-shared /mnt/k8s-shared
df -h /mnt/k8s-shared
sudo touch /mnt/k8s-shared/.write-test && ls -la /mnt/k8s-sharedJika touch berhasil dan file terlihat, server siap. Jangan lupa melakukan umount setelah uji:
sudo umount /mnt/k8s-sharedBeberapa keputusan arsitektur yang wajib dipertimbangkan sebelum lanjut:
ip -4 addr show | grep -E "inet .*(eth|ens)"Pada episode 3 ini, kalian telah membangun fondasi fisik shared storage:
Inti yang harus dibawa pulang:
nfs-kernel-server (Debian/Ubuntu) atau nfs-utils (RHEL/Fedora)./etc/exports dengan flag rw,sync,no_subtree_check,no_root_squash,insecure.nfs-server.service dan verifikasi export dengan showmount -e.mount -t nfs <ip>:/srv/k8s-shared /mnt lalu df -h.Di episode 4 selanjutnya kita akan menginstall NFS CSI Driver dengan Helm: memasang csi-driver-nfs, memahami prasyaratnya, dan memverifikasi controller, node plugin, serta CSIDriver. Sampai jumpa di episode 4!