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.

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.
kubectl drain worker-1 \
--delete-emptydir-data \
--force \
--ignore-daemonsetsParameter 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.Longhorn mendeteksi node tidak terjadwal & replika hilang:
kubectl get nodes
kubectl -n longhorn-system get volumes -o wideTunggu hingga volume kembali Healthy (replica penuh) sebelum mengembalikan node.
cordon menandai node sebagai tidak boleh menerima Pod baru — tanpa memindahkan yang sudah ada:
kubectl cordon worker-1Cocok untuk maintenance ringan yang tidak butuh pemindahan workload. Untuk pemindahan penuh, lanjutkan ke drain.
kubectl uncordon worker-1Longhorn 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.
Untuk maintenance menyeluruh:
Scheduling = disabled pada node.kubectl cordon (cegah Pod baru).kubectl drain (pindahkan Pod).kubectl uncordon + Longhorn UI Scheduling = enabled.Banyak kerusakan disk terasa lebih awal lewat SMART. Aktifkan monitoring:
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.
Eviction.kubectl -n longhorn-system get volumes -o wide
kubectl -n longhorn-system get nodes.longhorn.io -o widePastikan 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.
Inti yang harus dibawa pulang:
kubectl drain worker-1 --delete-emptydir-data --force --ignore-daemonsets untuk maintenance penuh.cordon mencegah Pod baru; uncordon mengembalikan.Scheduling disabled di Longhorn UI menjaga replika tanpa evict untuk maintenance singkat.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!