manifest.conf — profile: platform-engineer
← kembali ke catatan
2026-04-18

Menggunakan Horizontal Pod Autoscaler (HPA) di OpenShift

openshiftkubernetesautoscaling

Horizontal Pod Autoscaler (HPA) merupakan fitur Kubernetes dan OpenShift yang digunakan untuk melakukan scaling jumlah pod secara otomatis berdasarkan metrik tertentu, seperti penggunaan CPU, memory, maupun custom metrics.

Ketika application load meningkat, HPA akan menambah jumlah pod hingga batas maksimum yang telah ditentukan. Sebaliknya, ketika load menurun, HPA akan mengurangi jumlah pod sehingga penggunaan resource menjadi lebih efisien.

Prerequisites

  • Cluster OpenShift atau Kubernetes telah berjalan.
  • Deployment telah dibuat.
  • Deployment memiliki nilai requests dan limits CPU atau Memory.
  • Metrics Server atau OpenShift Monitoring tersedia.

Scaling Berdasarkan CPU

Contoh berikut membuat HPA yang akan mempertahankan penggunaan CPU rata-rata di angka 50%.

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: example-hpa
  namespace: your-namespace

spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: example-deployment

  minReplicas: 1
  maxReplicas: 10

  targetCPUUtilizationPercentage: 50

Konfigurasi tersebut akan menambah jumlah pod apabila rata-rata penggunaan CPU melebihi 50% dan mengurangi jumlah pod ketika penggunaan CPU kembali normal.

Scaling Berdasarkan Memory

Pada API autoscaling/v2, HPA dapat menggunakan beberapa jenis metrik, termasuk penggunaan memory.

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: example-hpa
  namespace: your-namespace

spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: example-deployment

  minReplicas: 1
  maxReplicas: 10

  metrics:
  - type: Resource
    resource:
      name: memory
      target:
        type: Utilization
        averageUtilization: 50

Pada contoh tersebut, HPA akan mempertahankan rata-rata penggunaan memory sebesar 50%.

Membuat HPA

Simpan konfigurasi ke dalam file, misalnya hpa.yaml, kemudian jalankan:

oc apply -f hpa.yaml

Verifikasi

Pastikan Horizontal Pod Autoscaler telah berhasil dibuat.

oc get hpa

Untuk melihat informasi lebih lengkap:

oc describe hpa example-hpa

HPA akan menampilkan informasi seperti target CPU atau memory, jumlah replica saat ini, replica minimum, replica maksimum, serta kondisi autoscaling.

Perbedaan HPA dan VPA

Fitur HPA VPA
Scaling Scale out (menambah replica) atau scale in (mengurangi replica) Scale up (menambah CPU/Memory) atau scale down
Target Jumlah Replica Resource Request dan Limit
Restart Pod Tidak (Pod baru di-provision) Ya (pada mode Auto, Pod direstart dengan spec baru)
Cocok untuk Stateless workloads (Microservices, Web Apps) Stateful workloads, database, atau aplikasi monolithic

Catatan

  • HPA bergantung penuh pada resources.requests. Tanpa request, HPA tidak memiliki baseline kalkulasi utilisasi.
  • Pastikan Metrics Server atau OpenShift Monitoring stack berjalan sehat.
  • Sangat direkomendasikan menggunakan autoscaling/v2 untuk deployment modern karena mendukung kombinasi multiple metrics (misalnya CPU + Memory sekaligus).
  • HPA dan VPA (Vertical Pod Autoscaler) secara teknis dapat dijalankan bersamaan, namun butuh tuning khusus agar tidak memicu race condition (misal: VPA menggunakan mode Initial atau Off sambil memberikan rekomendasi resource).

Kesimpulan

Horizontal Pod Autoscaler adalah fondasi autoscaling Kubernetes untuk merespons lonjakan traffic (spike) dengan menyesuaikan jumlah pod secara dinamis. Dengan HPA, deployment dapat menangani load tak terduga secara otomatis, sekaligus menghemat compute resources saat traffic sedang landai. Penggunaan API autoscaling/v2 sangat disarankan untuk fleksibilitas custom metrics dan memory scaling.