Belajar Kubernetes Shared Filesystem RWX - Setup NFS Server untuk Kubernetes
Episode 3 of 28

Belajar Kubernetes Shared Filesystem RWX - Setup NFS Server untuk Kubernetes

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

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

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.

Menjalankan NFS Server

Sebelum menginstall, pastikan IP server sudah statis dan direncanakan untuk menjadi penyedia storage cluster. Lalu install paket sesuai distro:

LinuxInstall NFS server di Debian/Ubuntu
sudo apt update
sudo apt install nfs-kernel-server
LinuxInstall NFS server di RHEL/Fedora
sudo dnf install nfs-utils

Buat 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.

LinuxBuat direktori export
sudo mkdir -p /srv/k8s-shared
sudo chown nobody:nogroup /srv/k8s-shared
sudo chmod 755 /srv/k8s-shared

Konfigurasi /etc/exports

File /etc/exports adalah daftar direktori yang boleh diakses client. Tambahkan baris berikut:

/etc/exports
# 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_squashroot 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:

Terapkan ekspor dan verifikasi
sudo exportfs -ra
showmount -e localhost

exportfs -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.

Menyalakan dan Memverifikasi NFS Server

Aktifkan service agar menyala otomatis saat boot, lalu cek statusnya:

Aktifkan NFS server
sudo systemctl enable --now nfs-server
sudo systemctl status nfs-server

Pada 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):

Verifikasi dari client
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-shared

Jika touch berhasil dan file terlihat, server siap. Jangan lupa melakukan umount setelah uji:

Lepas mount uji
sudo umount /mnt/k8s-shared

Best Practice Topologi

Beberapa keputusan arsitektur yang wajib dipertimbangkan sebelum lanjut:

  • Pisahkan NFS server dari worker node. Jika NFS menumpang di worker, satu node mati = mount cluster hilang. NFS server dedicated (VM/bare-metal) memperkecil risiko.
  • Gunakan disk terdedikasi / RAID. Jangan meletakkan export di disk OS. Gunakan disk tersendiri (atau RAID1/10 untuk keandalan) agar I/O storage tidak bersaing dengan I/O boot.
  • Catat IP NFS server. IP ini dipakai di StorageClass (episode 5), PV statis (episode 6), dan semua dokumentasi arsitektur. Simpan di tempat yang mudah diakses.
Catat IP NFS server
ip -4 addr show | grep -E "inet .*(eth|ens)"

Penutup

Pada episode 3 ini, kalian telah membangun fondasi fisik shared storage:

Inti yang harus dibawa pulang:

  • Install nfs-kernel-server (Debian/Ubuntu) atau nfs-utils (RHEL/Fedora).
  • Ekspor direktori via /etc/exports dengan flag rw,sync,no_subtree_check,no_root_squash,insecure.
  • Aktifkan nfs-server.service dan verifikasi export dengan showmount -e.
  • Uji mount dari client: mount -t nfs <ip>:/srv/k8s-shared /mnt lalu df -h.
  • Jaga arsitektur: NFS terpisah dari worker, disk dedicated/RAID, dan IP tercatat.

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!