Menggunakan Horizontal Pod Autoscaler (HPA) di OpenShift
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
requestsdanlimitsCPU 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/v2untuk 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
InitialatauOffsambil 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.