Belajar Kubernetes Block Storage RWO - Node & Disk Management Longhorn
Episode 10 of 28

Belajar Kubernetes Block Storage RWO - Node & Disk Management Longhorn

Mengelola node dan disk sebagai storage yang bisa tumbuh: menambah dan mengurangi disk, menandai node non-schedulable untuk maintenance, melakukan disk eviction saat mengganti hardware, serta membuat StorageClass multi-tier yang memisahkan SSD dan HDD per node.

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

Pendahuluan

Di episode 9 kita berlatih simulasi kegagalan node. Episode 10 membahas sisi pertumbuhan dan perawatan infrastruktur storage: menambah disk, menggantinya, atau menonaktifkan node untuk maintenance — semua tanpa mematikan volume.

Mengapa penting? Longhorn tidak membiarkan disk statis. Seiring data tumbuh, kalian akan menambah disk baru atau mengganti disk lama yang rusak. Mampu melakukan operasi ini tanpa downtime adalah keterampilan operator yang membedakan lab dan production.

Menambah dan Mengurangi Disk di Node

Menambah Disk Baru

Buka dashboard → Node → pilih node → Edit Node and Disks. Kalian menambahkan disk dengan memberikan:

  • Path: mount point atau block device (misal /mnt/longhorn2).
  • Maximum size: batas ukuran yang boleh dipakai Longhorn.

Atau via CLI dengan manifest pada CustomResource:

Lihat disk volume node
kubectl -n longhorn-system get nodes.longhorn.io -o jsonpath='{.items[*].spec.disks}'

Konsep kuncinya: Longhorn menghitung disk pada level node, bukan level PV. Menambah disk baru langsung membuat node punya lebih banyak kapasitas schedule-able replica.

Menandai Disk Tidak Bisa Dijadwalkan

Di UI, toggle Scheduling untuk disk tertentu:

  • schedulable: false → Longhorn tidak menempatkan replika baru di disk ini, tapi replika lama tetap tinggal.

Gunakan ini saat menyiapkan maintenance disk tertentu tanpa langsung evict.

Menghapus/Mengurangi Disk

Untuk melepas disk: evict dulu (lihat di bawah), baru hapus dari node. Longhorn menolak menghapus disk yang masih menyimpan replika aktif — keselamatan bawaan.

Membuat Node Non-Schedulable

Untuk maintenance node penuh (reboot, ganti kernel, perawatan fisik):

  1. UI → Node → aktifkan Scheduling = disabled.
  2. Replika yang tidak bisa di-schedule di node ini akan dipindah secara otomatis ke node lain — Longhorn melakukan eviction replika.

Perintah kubectl yang setara:

bash
kubectl -n longhorn-system label node worker-1 node.longhorn.io/evict-node=true

Selanjutnya jalankan drain normal Kubernetes (episode 9) untuk memindahkan Pod.

Disk Eviction

Kenapa Eviction Diperlukan

Saat mengganti disk (hardware) atau mematikan node, replika di disk itu harus di-pindah dulu ke disk/node lain. Disk Eviction memindah data tiap volume secara bergantian agar tidak ada dua replika volume sama di node yang sama (untuk menghindari kehilangan kuorum).

Langkah di UI:

  • Node → pilih node → Disks → aktifkan Eviction pada disk yang akan dilepas.
  • Longhorn memindahkan replika volume ke disk lain secara bertahap.
  • Setelah semua replika keluar, tombol hapus disk menjadi aktif — klik Delete.
  • Disk bisa dilepas fisik.

Verifikasi

Pantau status volume: semua volume harus kembali Healthy setelah eviction selesai. Untuk volume besar, eviction berlangsung berjam-jam — jadwalkan saat beban rendah.

StorageClass Multi-Tier

Konsep: SSD vs HDD dalam Satu Cluster

Longhorn memungkinkan beberapa disk berbeda tipe dalam node yang sama — SSD cepat dan HDD kapasitas. Untuk mengarahkan volume ke tipe tertentu, kita gunakan StorageClass + node labels:

  1. Label node penyimpan SSD dan HDD.
  2. Buat StorageClass dengan parameter diskSelector atau nodeSelector.
yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: longhorn-fast
provisioner: driver.longhorn.io
allowVolumeExpansion: true
parameters:
  numberOfReplicas: "3"
  dataLocality: "best-effort"
  diskSelector: is-ssd
  replicaAntiAffinity: "true"
yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: longhorn-hdd
provisioner: driver.longhorn.io
allowVolumeExpansion: true
parameters:
  numberOfReplicas: "3"
  diskSelector: "is-hdd"
  dataLocality: "best-effort"

Label disk di UI: Edit Node → pada tiap disk beri atribut custom is-ssd=true / is-hdd=true. Longhorn memakai diskSelector untuk memfilter disk mana yang boleh dipakai volume dari StorageClass itu.

Penggunaan

  • PostgreSQL → longhorn-fast (butuh IOPS).
  • Log/backup → longhorn-hdd (kapasitas murah).
  • PVC yang salah, lihat di UI — Longhorn menampilkan alasan schedulable tidak cocok.

Tip

Multi-tier bukan sekadar "disk beda kecepatan" — ia adalah isolasi performa per workload. Database dan batch processing tidak boleh saling rebut disk. Gunakan longhorn-fast untuk semua volume kritis, dan longhorn-hdd untuk volume sekunder.

Penutup

Inti yang harus dibawa pulang:

  • Disk ditambahkan per node di UI/CR — Longhorn memakai disk yang eksplisit saja.
  • Non-schedulable node → replika dipindah otomatis (eviction).
  • Evict disk sebelum menghapusnya — Longhorn menolak hapus disk yang masih berisi replika.
  • Multi-tier StorageClass (SSD/HDD) memakai diskSelector + label disk untuk isolasi performa.

Di episode 11 selanjutnya kita akan membahas NetworkTopology, ReplicaPlacement & Multi-AZ — cara Longhorn menempatkan replika berdasarkan topology zone/region, anti-affinity soft/hard, serta simulasi label zone untuk HA geografis. Sampai jumpa di episode 11!

Belajar Kubernetes Block Storage RWO - Node & Disk Management Longhorn | Belajar Kubernetes Block Storage RWO