Sebelum menyentuh Longhorn, kalian perlu menguasai dasar Kubernetes, konsep PV/PVC/StorageClass, block device Linux, serta SQL dan database. Di episode 0 ini kalian menyiapkan cluster Kubernetes 5 node, memasang open-iscsi dan nfs-common di semua worker, lalu memverifikasi seluruh environment siap dipakai sepanjang series.

Selamat datang di series Belajar Kubernetes Block Storage RWO! Series ini akan membawa kalian menguasai penyediaan block storage ber-replikasi untuk Kubernetes menggunakan Longhorn — fokus utama untuk database dan aplikasi stateful. Total ada 28 episode yang tersusun dalam enam fase, dari fondasi konsep sampai production readiness.
Sebelum menyentuh helm install longhorn atau membuat StorageClass pertama, ada skill dasar dan perangkat yang wajib kalian siapkan. Mengapa prasyarat ini penting? Karena block storage di Kubernetes hidup di persimpangan dua dunia: dunia Kubernetes (Pod, PVC, StorageClass) dan dunia Linux block device (ext4, mount, iSCSI). Tanpa memahami dua lapisan ini, kalian akan kesulitan saat volume terasa lambat, gagal attach, atau data hilang.
Episode 0 ini adalah peta jalan kalian: kita akan memastikan skill dasar terpenuhi, menyiapkan cluster 5 node, memasang paket prasyarat Longhorn, dan memverifikasi environment untuk pertama kali. Setelah episode ini selesai, seluruh series bisa diikuti dengan nyaman.
Longhorn berjalan sebagai operator di dalam Kubernetes dan menyediakan volume melalui CSI driver. Kalian wajib nyaman dengan:
get, describe, logs, apply, edit, drain, cordon.Kalian tidak perlu menjadi expert, tetapi harus paham siklus hidup resource. Episode 5 dan 6 akan membedah storage API lebih dalam, jadi pastikan dasar kubectl kalian sudah cair dulu.
Poin paling penting di series ini: memahami perbedaan tiga lapisan storage:
Longhorn bekerja dengan cara membuat PV secara dinamis dari StorageClass. Kalau kalian belum paham hubungan ketiganya, luangkan waktu membaca episode 5 saat tiba waktunya.
Longhorn memformat disk node menjadi replica block device. Kalian wajib paham perintah berikut:
lsblk -f
mount | grep -E "ext4|xfs"
mkfs.ext4 -Vlsblk -f menampilkan semua disk dan filesystem yang ada. Longhorn memakai disk kosong yang tidak diformat untuk replica — jadi kalian harus bisa membedakan disk yang punya data dan yang benar-benar kosong.
Seluruh series memakai studi kasus Laravel + PostgreSQL. Kalian tidak perlu jadi DBA, tetapi wajib paham:
fsync, dan mengapa data harus persisten.pg_dump/pg_restore untuk latihan backup.Kita memakai topologi yang realistis untuk production:
| Node | Peran |
|---|---|
cp-1, cp-2, cp-3 | Control plane (etcd + API server) |
worker-1, worker-2 | Data plane — menjalankan Longhorn + workload |
Kalian boleh memakai k3s, kubeadm, RKE2, atau managed cluster — selama versi Kubernetes ≥ 1.25 sesuai dukungan Longhorn. Dua worker node adalah batas minimum agar replikasi 3 memang memungkinkan (2 node = 2 replica + 1 di node lain, tapi idealnya 3 node; untuk lab 2 node cukup dengan replica-soft-anti-affinity).
kubectl version --client
kubectl get nodes
helm versionKedua tool wajib terinstall dan bisa mengakses cluster. Verifikasi bahwa semua 5 node berstatus Ready.
Longhorn V1 Data Engine mengattach volume via iSCSI. Setiap worker node wajib memiliki open-iscsi dengan layanan iscsid aktif:
sudo apt update && sudo apt install -y open-iscsi
sudo systemctl enable --now iscsid
iscsiadm -m sessioniscsiadm -m session boleh kosong (belum ada sesi) — yang penting binary ada dan service aktif. Tanpa ini, Pod tidak akan pernah bisa mengattach volume Longhorn.
Paket ini diperlukan untuk dukungan RWX (Share Manager memakai NFSv4) dan untuk backup target NFS di episode 15:
sudo apt update && sudo apt install -y nfs-commonMeski fokus series ini RWO, memasang nfs-common sejak awal menghindari kejutan di episode yang memakai backup NFS.
Untuk backup target di episode 15-16, kalian bisa memakai AWS S3 atau MinIO self-hosted. Ini opsional — kalian bisa mulai dengan backup NFS dan upgrade ke S3 nanti.
Image aplikasi Laravel dan PostgreSQL akan kita deploy. Siapkan akses ke Docker Hub, GHCR, atau registry internal.
Jalankan verifikasi menyeluruh sebelum melanjutkan:
kubectl get nodes -o wide
kubectl get pods -A --sort-by=.metadata.name | head -20
for node in worker-1 worker-2; do
kubectl debug node/$node --image=alpine -- sh -c 'iscsiadm -m session 2>&1; cat /proc/modules | grep -E "iscsi_tcp" || true'
donePastikan lima node Ready, core system (kube-system) Running, dan modul kernel iscsi_tcp tersedia di worker node — ini kernel module yang dipakai transport iSCSI.
Note
Untuk lab berjalan mulus, setidaknya 2 worker node dengan 2 vCPU + 4 GB RAM masing-masing. Longhorn menjalankan komponen engine per volume, jadi node yang terlalu kecil akan cepat kehabisan memori saat kita deploy PostgreSQL.
Inti yang harus dibawa pulang:
iscsid di semua worker node — wajib untuk Longhorn V1.nfs-common untuk dukungan RWX dan backup NFS di episode-episode berikutnya.Di episode 1 selanjutnya kita akan membahas mengapa database butuh block storage — studi kasus Laravel + PostgreSQL, kenapa shared filesystem berbahaya untuk transaksi database, perbedaan access mode RWO vs RWX, serta mengapa StatefulSet lebih cocok untuk database daripada Deployment. Pastikan environment kalian sudah siap, karena perjalanan Belajar Kubernetes Block Storage RWO dimulai!