Belajar Kubernetes Block Storage RWO - Maintenance & Node Drain (Kubernetes)
Episode 22 of 28

Belajar Kubernetes Block Storage RWO - Maintenance & Node Drain (Kubernetes)

Melakukan maintenance worker node tanpa menurunkan storage: drain node dengan benar, cordon dan uncordon sebagai kontrol scheduling, mode maintenance Longhorn, serta rencana menghadapi disk failure lewat deteksi SMART, eviction, dan penggantian disk.

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

Pendahuluan

Di episode 9 kita berlatih drain sederhana; episode 21 selesai mengupgrade Longhorn. Episode 22 menyusun prosedur maintenance yang aman: bagaimana merawat node storage (reboot, ganti kernel, perawatan fisik) tanpa mengambil risiko data.

Mengapa penting? Maintenance bukan "kalau sempat" — reboot kernel, pembaruan hardware, atau relokasi rack adalah kegiatan nyata. Kalau dieksekusi sembarangan, maintenance bisa menjadi penyebab paling umum volume degraded & replika rebuilding. Dengan protokol yang benar, seluruh proses berjalan mulus.

Drain Worker Node

Perintah Drain

Drain worker node
kubectl drain worker-1 \
  --delete-emptydir-data \
  --force \
  --ignore-daemonsets

Parameter di atas penting:

  • --delete-emptydir-data: menghapus emptyDir (tidak masalah untuk data non-persisten).
  • --force: memaksa Pod yang tidak dikelola controller dipindah.
  • --ignore-daemonsets: biarkan DaemonSet (sistem) tetap, karena tidak bisa dipindah.

Setelah Drain

Longhorn mendeteksi node tidak terjadwal & replika hilang:

  • Volume yang memakai replika di node ini menjadi degraded.
  • Longhorn mulai rebuild replika ke node sehat.
  • Pod database yang dipindah memakai volume dari node baru.
Verifikasi setelah drain
kubectl get nodes
kubectl -n longhorn-system get volumes -o wide

Tunggu hingga volume kembali Healthy (replica penuh) sebelum mengembalikan node.

Cordon & Uncordon

Mencegah Schedule Baru

cordon menandai node sebagai tidak boleh menerima Pod baru — tanpa memindahkan yang sudah ada:

Cordon node
kubectl cordon worker-1

Cocok untuk maintenance ringan yang tidak butuh pemindahan workload. Untuk pemindahan penuh, lanjutkan ke drain.

Mengembalikan

Uncordon node
kubectl uncordon worker-1

Maintenance Mode Longhorn

Menonaktifkan Scheduling Node di UI

Longhorn punya mekanisme sendiri untuk menjaga reliability selama maintenance:

Longhorn UI → Node → node worker-1 → aktifkan Scheduling = disabled.

Efeknya replika yang ada di node itu tidak menerima job baru, tetapi replika lama tetap di sana — tidak di-evict. Ini berguna jika maintenance hanya sebentar (reboot cepat) dan kalian ingin menghindari rebuild yang boros bandwidth.

Kombinasi yang Benar

Untuk maintenance menyeluruh:

  1. Longhorn UI: Scheduling = disabled pada node.
  2. kubectl cordon (cegah Pod baru).
  3. kubectl drain (pindahkan Pod).
  4. Maintenance.
  5. kubectl uncordon + Longhorn UI Scheduling = enabled.
  6. Verifikasi & biarkan rebuild beres.

Plan untuk Disk Failure

Deteksi Dini dengan SMART

Banyak kerusakan disk terasa lebih awal lewat SMART. Aktifkan monitoring:

Cek SMART di worker node
sudo smartctl -a /dev/sdb | grep -E "Reallocated_Sector|Current_Pending|Offline_Uncorrectable"

Kenaikan Reallocated_Sector_Ct atau Current_Pending_Sector adalah tanda disk menuju kegagalan.

Prosedur Eviction saat Disk Rusak

  1. Longhorn UI → node → disk yang bermasalah → set Eviction.
  2. Longhorn memindahkan semua replika ke disk/node lain.
  3. Setelah kosong, Remove disk.
  4. Ganti disk secara fisik (hot-swap bila memungkinkan).
  5. Tambahkan disk baru sebagai pengganti di UI.

Verifikasi Setelah Penggantian

Cek status volume pasca penggantian disk
kubectl -n longhorn-system get volumes -o wide
kubectl -n longhorn-system get nodes.longhorn.io -o wide

Pastikan volume kembali Healthy dan node menampilkan disk baru yang schedulable.

Important

Jangan sekali-kali mencabut disk masker (fisik) tanpa eviction. Longhorn menganggapnya sebagai kehilangan replika mendadak — bisa terjadi rebuild besar-besaran berbarengan. Eviction mengawal migrasi replika secara bergilir agar kuorum tidak pernah runtuh.

Penutup

Inti yang harus dibawa pulang:

  • kubectl drain worker-1 --delete-emptydir-data --force --ignore-daemonsets untuk maintenance penuh.
  • cordon mencegah Pod baru; uncordon mengembalikan.
  • Mode Scheduling disabled di Longhorn UI menjaga replika tanpa evict untuk maintenance singkat.
  • Deteksi disk rusak via SMART; gunakan eviction sebelum mengganti disk.

Di episode 23 selanjutnya kita akan membahas CI/CD & GitOps untuk aplikasi + DB — pipeline build image Laravel, GitOps dengan Argo CD/Flux untuk manifest aplikasi & DB, job migrasi yang aman di pipeline, serta secret injection via External Secrets. Sampai jumpa di episode 23!

Belajar Kubernetes Block Storage RWO - Maintenance & Node Drain (Kubernetes) | Belajar Kubernetes Block Storage RWO