Menyiapkan node worker agar siap dipakai Longhorn: persyaratan Kubernetes, instalasi open-iscsi di Debian/Ubuntu dan RHEL, mengenali disk kosong yang aman dipakai, serta verifikasi modul kernel iscsi_tcp dan nvme sebelum instalasi operator.

Di episode 2 kita memahami arsitektur Longhorn — Engine, Replica, dan V1/V2 engine. Di episode 3 kita turun ke level node: memastikan setiap worker node benar-benar siap menampung Longhorn. Ini langkah yang paling sering diskip oleh pemula, dan justru di sanalah akar banyak masalah: volume stuck attached, replica scheduling failed, atau iscsi error.
Mengapa episode ini penting? Karena Longhorn sangat bergantung pada prasyarat node: modul kernel, paket userspace, dan disk kosong. Satu worker node tanpa open-iscsi cukup untuk menggagalkan attach volume ke Pod. Mari kita bereskan semuanya dari awal.
Berikut checklist minimum untuk setiap node yang akan menjalankan Longhorn:
| Persyaratan | Detail |
|---|---|
| Kubernetes | Versi ≥ 1.25; cluster sehat |
| Worker node | Semua node yang dipakai schedule Pod volume harus punya prasyarat |
| open-iscsi | Terinstall + service iscsid aktif |
| modul kernel | iscsi_tcp (V1), nvme_tcp/nvme_rdma (V2) |
| Disk storage | disk kosong/partisi khusus — jangan satukan dengan rootfs |
| nfs-common | Diperlukan untuk backup NFS & RWX (opsional tapi disarankan) |
Yang paling sering salah: memasang Longhorn di cluster single-node yang juga menjalankan control plane. Longhorn bisa jalan di situ, tapi replikasi antar node tidak akan punya "antar node" — tutup mata terhadap HA. Untuk series ini kita pakai worker-1 dan worker-2 sebagai data plane.
sudo apt update
sudo apt install -y open-iscsi
sudo systemctl enable --now iscsid
systemctl status iscsidPastikan iscsid aktif. Jika kalian instal dari paket lama, enable --now akan mengaktifkan service startup.
sudo dnf install -y iscsi-initiator-utils
sudo systemctl enable --now iscsid
systemctl status iscsidPada distro RHEL-family, service biasanya bernama iscsid juga. Verifikasi dengan perintah yang sama.
Tip
Periksa selalu systemctl is-active iscsid. Longhorn tidak melakukan auto-install paket; jika service mati, volume akan gagal attach dengan pesan iSCSI error di log CSI plugin. Baris ini wajib dicek di semua worker node, bukan hanya node pertama.
Jalankan di kedua worker node:
lsblk -fOutput akan menunjukkan, misalnya:
NAME FSTYPE LABEL MOUNTPOINT
sda ext4 /
sdb # kosong — kandidat replika LonghornSesuatu yang tidak punya FSTYPE dan tidak ter-mount adalah kandidat. /dev/sdb, /dev/nvme0n1, /dev/vdb adalah nama umum di VM.
Ini poin penting: biarkan disk kosong (blank). Longhorn (via extend4/luks/device mapper) akan memformatnya sendiri sesuai kebutuhan. Jangan jalankan mkfs.ext4 /dev/sdb — kalau sudah ke-format, Longhorn menolak memakainya (device bukan block device kosong).
Jika disk pernah dipakai dan ingin di-reset, Longhorn menyediakan otomasi (di UI: disk → format). Untuk keperluan pre-req, cukup pastikan tidak ada mount dan tidak ada FSTYPE yang aktif.
Longhorn menambahkan disk ke node lewat Longhorn Node object (bukan langsung mount!). Ada dua cara:
Node → node status → Add Disk, isi path dan ukuran.kubectl edit longhornnode atau hasil longhorn-manager.Untuk episode berikutnya, kita pakai UI — tapi pahami bahwa yang terjadi di belakang adalah update ke CustomResource nodes.longhorn.io.
kubectl get nodes
lsmod | grep -E "iscsi_tcp|nvme_tcp"
cat /proc/scsi/iscsi/version 2>/dev/null || echo "iscsi (via open-iscsi) belum terdeteksi"Pastikan iscsi_tcp terload. Jika tidak, muat manual dan buat persist:
sudo modprobe iscsi_tcp
echo "iscsi_tcp" | sudo tee /etc/modules-load.d/longhorn.confsudo cat /etc/iscsi/initiatorname.iscsi
iscsiadm -m iface -o show | head -5Setiap node harus memiliki InitiatorName unik. Jika dua node berbagi nama yang sama, attach volume bisa konflik.
Warning
Jangan pernah menaruh disk Longhorn di rootfs (misalnya partisi /). Longhorn menulis data block yang besar; rootfs yang penuh akan membuat node tidak sehat. Gunakan disk eksternal atau volume terpisah untuk setiap node.
| Pengecekan | Perintah | Hasil yang diinginkan |
|---|---|---|
| Cluster healthy | kubectl get nodes | worker-1, worker-2 Ready |
| iscsid aktif | systemctl is-active iscsid | active |
| modul kernel | `lsmod | grep iscsi_tcp` |
| disk kosong | lsblk -f | /dev/sdb tanpa FSTYPE |
| initiator unik | cat /etc/iscsi/initiatorname.iscsi | berbeda tiap node |
Inti yang harus dibawa pulang:
iscsid aktif di semua worker node adalah prasyarat Longhorn.iscsi_tcp wajib ter-load; nvme_tcp untuk V2.Di episode 4 selanjutnya kita akan menginstall Longhorn via Helm dan manifest — menambahkan chart, memasang ke namespace longhorn-system, memverifikasi Pod Running, membuka dashboard, dan mengenal StorageClass default. Siapkan worker node yang sudah lolos checklist tadi, dan sampai jumpa di episode 4!