Belajar Kubernetes Block Storage RWO - Troubleshooting Common Longhorn Issues
Episode 25 of 28

Belajar Kubernetes Block Storage RWO - Troubleshooting Common Longhorn Issues

Menghadapi masalah Longhorn yang paling sering terjadi: volume offline/degraded, PVC pending karena kegagalan CSI provisioning, I/O hang pada Pod, error multi-attach pada volume RWO, dan risiko korupsi data. Setiap masalah disertai langkah diagnosis dan solusi.

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

Pendahuluan

Semua sistem yang rumit akan menemui masalah — dan storage adalah salah satu yang paling dramatis: gejalanya bisa "data hilang", "Pod hang", atau "tidak bisa attach". Episode 25 membekali kalian dengan jungle checklist troubleshooting untuk masalah Longhorn paling umum.

Mengapa penting? Diagnosis yang benar adalah setengah solusi. Jika kalian bisa membedakan "masalah node", "masalah CSI", dan "masalah iscsi", kalian menghemat jam berdebat dengan log. Dan di storage, kecepatan diagnosis menentukan seberapa kecil blast radius.

Volume Offline / Degraded

Gejala

  • UI Longhorn menampilkan Degraded atau Offline.
  • Pod tidak bisa attach / restart menunggu.

Diagnosis

Cek engine & replica
kubectl -n longhorn-system get engine
kubectl -n longhorn-system get replica
kubectl -n longhorn-system get volumes.longhorn.io

Perhatikan kolom:

  • ROBUSTNESS: healthy / degraded / faulted.
  • SALVAGE_REQUESTED: true jika crash dianggap tidak salvable.

Solusi

  • Degraded (replica down): cek node & disk; kick rebuild replika (episode 9).
  • Offline (kuorum hilang):
    • Periksa node status; jika node kembali, replika akan re-attach.
    • Jika node mati permanen, gunakan empat fitur Salvage: aktifkan salvage dari UI (untuk volume yang dianggap faulted) setelah memastikan data mampu.
    • Cek kubectl -n longhorn-system logs longhorn-manager-* untuk pesan crash.

CSI Provisioning Gagal / PVC Pending

Gejala

  • kubectl get pvc menampilkan Pending selamanya.
  • Tidak ada PV dibuat.

Diagnosis

Diagnosis PVC pending
kubectl describe pvc <nama-pvc>

Perhatikan Events:

  • storageclass.storage.k8s.io "<sc>" not found → StorageClass salah/salah nama.
  • driver.longhorn.io events kosong → driver belum ready.
  • persistentvolumecontroller warning → masalah di driver.

Solusi

  1. Cek StorageClass & access mode cocok.
  2. Verifikasi driver CSI:
Cek CSI driver
kubectl get csinodes; kubectl get csidrivers
kubectl -n longhorn-system get pods | grep csi
  1. Jika csi-provisioner atau longhorn-csi-plugin CrashLoop → lihat log:
Log CSI plugin
kubectl -n longhorn-system logs deploy/longhorn-csi-plugin
  1. Pastikan node punya disk schedulable (episode 10) — tanpa itu provisioning selesai tapi attach gagal.

I/O Hang / Timeout di Pod

Gejala

  • Pod berjalan tapi proses menunggu I/O (misal psql menggantung).
  • Error di aplikasi: input/output error.

Diagnosis

bash
dmesg | grep -i scsi
iscsiadm -m session -P 3
  • dmesg menampilkan error scsi/iscsi (mis. connection timed out).
  • iscsiadm -m session menampilkan sesi aktif; jika kosong, sesi terputus.

Solusi

  1. Cek node network & disk — longhorn-manager log akan menampilkan timeout.
  2. Restart iscsid bila service mati; pastikan kernel module ada.
  3. Jika disk fisik lambat/rusak (episode 22) → ganti disk.
  4. Re-attach volume (detach + attach) bila perlu.

Multi-Attach Error (RWO Dilewati)

Gejala

Multi-Attach error for volume "<pv>" - volume is already exclusively attached to one node.

Penyebab

Dua Pod mencoba me-mount volume RWO yang sama dari node berbeda — karena:

  • Scaling Deployment database secara tidak sengaja (replica 2).
  • Cron yang menjalankan 2 job bersamaan memakai volume sama.
  • Replica Pod tersebar karena salah affinity.

Solusi

  1. Temukan Pod mana yang menulis volume:
bash
kubectl get pods -o wide | grep <pv-name>
  1. Pastikan hanya satu Pod menulis (RWO).
  2. Untuk database: satu primary + read-replica (episode 19), bukan dua writer.
  3. Jika perlu akses bersama antar Pod → gunakan RWX via Share Manager (file), bukan volume DB.

Data Corruption (fsync)

Gejala

  • PostgreSQL error: relation ... does not exist / data tak konsisten.
  • Filesystem check menemukan error.

Penyebab Utama

  1. NFS untuk data DB (lawan aturan episode 1) — fsync tidak dijamin.
  2. Multi-writer pada volume RWO — dua proses menulis = korupsi.
  3. fsGroup salah sehingga container tak bisa menulis sempurna, atau mount terjadi sebelum service siap.

Solusi

  • Database: pakai block RWO selalu (bukan NFS untuk filesystem DB).
  • Satu primary saja; replika via streaming.
  • Pastikan fsGroup sesuai UID database.
  • Setelah recovery, validasi dengan fsck dan test aplikasi.

Caution

Jika volume sudah faulted akibat korupsi, jangan panik-snapshot over it. Restore dari backup terakhir (episode 16) lebih aman daripada mencoba-salvage data yang sudah rusak. Backup yang teruji akan pernah menyelamatkan kalian.

Penutup

Inti yang harus dibawa pulang:

  • Degraded vs Offline: cek engine/replica; salvage hanya untuk kasus faulted.
  • PVC Pending: cek StorageClass, CSI driver down, dan disk schedulable.
  • I/O hang: dmesg & iscsiadm session adalah kunci diagnosis.
  • Multi-attach: RWO hanya satu writer — jangan extend volume ke dua Pod.
  • Data corruption: jauhi NFS untuk DB, satu primary, fsGroup benar.

Di episode 26 selanjutnya kita akan membahas cost, sizing, dan trade-off — menghitung biaya Longhorn, rasio replika vs kapasitas, kapan memakai Longhorn vs alternatif, dan ringkasan keputusan arsitektur storage. Sampai jumpa di episode 26!

Belajar Kubernetes Block Storage RWO - Troubleshooting Common Longhorn Issues | Belajar Kubernetes Block Storage RWO