Belajar Kubernetes Simple Shared Storage - Node Drained & Maintenance
Episode 16 of 28

Belajar Kubernetes Simple Shared Storage - Node Drained & Maintenance

Menjalankan maintenance node tanpa panik: membedah perilaku volume RWX (pindah mulus) melawan Local PV RWO (terikat node), memilih reclaimPolicy yang tepat, dan menjalankan prosedur drain-cordon-uncordon yang aman

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

Pendahuluan

Suatu hari kalian harus mematikan sebuah worker — update kernel, ganti RAM, atau memindahkan perangkat. Episode 16 mengajarkan cara maintenance node dengan aman: drain yang benar, memahami apa yang terjadi pada masing-masing tipe volume, dan menghindari downtime karena Local PV yang terikat node.

Perbedaan penting: volume RWX (NFS) ikut pindah ke node baru, sedangkan Local PV RWO (database) tidak bisa — kalian harus menyiapkan strategi sebelum mencabut node.

Drain Worker

Prosedurnya selalu tiga langkah: cordon → drain → uncordon.

KubernetesCordon node
kubectl cordon worker-1

Cordon menandai node tidak menerima Pod baru; Pod yang sudah ada tetap jalan. Lalu evakuasikan:

KubernetesDrain node
kubectl drain worker-1 --ignore-daemonsets --delete-emptydir-data
  • --ignore-daemonsets — DaemonSet (node exporter, CNI) tidak dievakuasi (mereka memang diharapkan ada di tiap node).
  • --delete-emptydir-data — mengizinkan Pod emptyDir dihapus.

RWX: Pindah Mulus

Pod aplikasi (Laravel) yang memakai volume NFS RWX di-reschedule ke node lain dengan mudah:

KubernetesCek Pod pindah node
kubectl get pod -l app=laravel -o wide

Karena volume diakses lewat Service NFS (bukan terikat node), Pod baru langsung mount di node baru dan data tetap utuh.

RWO (Local PV): Terikat Node

Pod database (postgres-0) dengan Local PV tidak ikut terjadwal ke node lain — PVC-nya menempel pada node. Setelah drain, postgres-0 menjadi Pending menunggu node asal kembali (atau backup/restore bila node mati).

KubernetesLihat Pod Pending
kubectl get pod -l app=postgres

Important

Sebelum drain node yang memuat Local PV, putuskan salah satu: (a) selesaikan maintenance cepat dan node kembali hari itu juga; (b) pindahkan data via pg_dump/restore (episode 8/20) atau ekspor-impor media. Rencana ini menggagalkan downtime yang tidak disadari.

Persistensi

reclaimPolicy menentukan apa yang terjadi pada PV saat PVC dihapus:

PolicyPerilakuKapan
DeletePV & data dihapusLab, data disposable
RetainPV & data tersisa untuk manualData penting, investigasi
StorageClass dengan Retain
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: openebs-hostpath-retain
provisioner: openebs.io/local
volumeBindingMode: WaitForFirstConsumer
reclaimPolicy: Retain

Dengan Retain, kalian bisa menarik kembali data dari PV yang ditinggalkan (misal memindahkan folder hostpath) sebelum akhirnya dibersihkan manual.

Prosedur

Rangkuman maintenance yang aman:

KubernetesMaintenance penuh
kubectl cordon worker-1
kubectl drain worker-1 --ignore-daemonsets --delete-emptydir-data
# ... maintenance fisik/logis node ...
kubectl uncordon worker-1
kubectl get nodes

Setelah uncordon, Pod baru boleh masuk lagi ke node. Verifikasi aplikasi:

KubernetesVerifikasi pasca-maintenance
kubectl get pod -l app=laravel -o wide
kubectl get pod -l app=postgres
curl -I https://laravel.example.com/

Tip

Catat di runbook: node mana memuat database (Local PV), berapa lama maintenance dijadwalkan, dan apakah strategi DB adalah "tunggu node kembali" atau "backup-restore". Satu baris catatan ini menyelamatkan kepanikan di kemudian hari.

Penutup

Pada episode 16 ini, maintenance node bukan lagi teka-teki:

Inti yang harus dibawa pulang:

  • Prosedur: cordondrain --ignore-daemonsets --delete-emptydir-data → maintenance → uncordon.
  • Volume RWX (NFS) pindah mulus antar node; Local PV RWO terikat node.
  • Untuk node ber-Local PV, siapkan strategi: tunggu node atau backup-restore.
  • reclaimPolicy Retain menyimpan PV & data saat PVC dihapus.
  • Catat peta data-node di runbook tim.

Di episode 17 selanjutnya kita akan memperbarui OpenEBS: upgrade chart via Helm, memastikan kompatibilitas versi Kubernetes, dan memverifikasi StorageClass serta PVC tetap utuh pasca-update. Sampai jumpa di episode 17!

Belajar Kubernetes Simple Shared Storage - Node Drained & Maintenance | Belajar Kubernetes Simple Shared Storage