Panduan Lengkap Autoscaling di Kubernetes Bare-Metal (Lengkap untuk Pemula)

Autoscaling adalah salah satu fitur paling menarik di Kubernetes. Dengan autoscaling, jumlah pod bisa bertambah atau berkurang secara otomatis berdasarkan beban kerja. Namun, banyak pemula mengira bahwa fitur ini hanya tersedia di cloud seperti AWS, GCP, atau Azure. Nyatanya, autoscaling juga bisa dilakukan di Kubernetes yang berjalan di server bare-metal. π»βοΈ
Artikel ini akan membimbing kamu secara lengkap untuk mengatur Horizontal Pod Autoscaler (HPA) di lingkungan Kubernetes bare-metal, mulai dari instalasi metrics-server, deployment contoh, hingga simulasi beban. Artikel ini cocok bagi kamu yang ingin membangun cluster Kubernetes di rumah, kantor, atau VPS tanpa layanan cloud.
β Apa itu Horizontal Pod Autoscaler (HPA)?
Horizontal Pod Autoscaler (HPA) adalah mekanisme yang memungkinkan Kubernetes untuk secara otomatis menambah atau mengurangi jumlah pod dalam suatu deployment berdasarkan metrik tertentu, biasanya CPU usage atau memory usage. π
HPA memantau pemakaian sumber daya dan menyesuaikan jumlah replika sesuai kebutuhan. Dengan begitu, kamu tidak perlu menyesuaikan jumlah pod secara manual saat terjadi lonjakan trafik atau beban sistem.
π§ Contoh kasus:
- Saat pengunjung website meningkat β CPU naik β HPA menambah pod
- Saat trafik sepi β CPU turun β HPA mengurangi pod
Dengan sistem ini, aplikasi kamu menjadi lebih efisien dan responsif terhadap perubahan beban.
βοΈ Persiapan: Pastikan Metrics Server Terinstall
Metrics server adalah komponen penting agar HPA bisa membaca metrik seperti CPU dan memory dari setiap pod. Jalankan perintah berikut untuk menginstalnya:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
π§ Konfigurasi untuk Bare-Metal
Karena kamu menggunakan bare-metal, kamu harus menambahkan beberapa argumen agar metrics-server bisa bekerja:
- Edit deployment metrics-server:
kubectl -n kube-system edit deployment metrics-server
- Tambahkan argumen ini pada bagian
args
:
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP,Hostname
- --kubelet-use-node-status-port

- Simpan dan keluar dari editor.
- Cek apakah metrics-server sudah jalan:
kubectl get pods -n kube-system -l k8s-app=metrics-server

Jika status READY
adalah 1/1
, berarti metrics-server berhasil berjalan β
π¦ Deployment Contoh: Nginx + Autoscaling
Berikut adalah contoh file YAML lengkap untuk deploy aplikasi Nginx dan mengaktifkan autoscaling berdasarkan CPU usage:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-autoscale
spec:
replicas: 1
selector:
matchLabels:
app: nginx-autoscale
template:
metadata:
labels:
app: nginx-autoscale
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 200m
memory: 256Mi
---
apiVersion: v1
kind: Service
metadata:
name: nginx-autoscale-svc
spec:
selector:
app: nginx-autoscale
ports:
- port: 80
targetPort: 80
type: NodePort
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: nginx-autoscale-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: nginx-autoscale
minReplicas: 1
maxReplicas: 5
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
π οΈ Apply file YAML di atas:
kubectl apply -f nginx-autoscale.yaml
ποΈ Cara Melihat Autoscaling Bekerja
Gunakan perintah berikut untuk melihat autoscaler aktif:
kubectl get hpa -w

Untuk melihat data metrik CPU dan memory:
kubectl top pods
kubectl top nodes

π Jika CPU usage melebihi target, HPA akan menambah jumlah pod.
π§ͺ Simulasi Beban (Stress Test)
Untuk melihat efek autoscaling secara langsung, kamu bisa buat beban buatan:
kubectl run -it --rm --image=busybox load -- /bin/sh
Lalu jalankan:
while true; do wget -q -O- http://nginx-autoscale-svc.default.svc.cluster.local; done

Tunggu 1β2 menit dan lihat apakah jumlah pod bertambah dengan:
kubectl get hpa -w
kubectl get pods

π Bagaimana Jika CPU Turun Lagi?
HPA tidak hanya menambah pod saat beban tinggi, tapi juga akan menurunkan jumlah pod secara otomatis saat CPU usage turun.
π Secara default, Kubernetes akan:
- Cepat scale up saat CPU tinggi
- Tunggu beberapa menit (stabilisasi) sebelum scale down untuk mencegah fluktuasi berlebihan
Contoh: dari 3 pod β kembali ke 1 pod saat beban rendah.
β Penutup
Dengan konfigurasi yang benar, kamu bisa menikmati fitur autoscaling Kubernetes bahkan di server bare-metal. Fitur ini membuat aplikasi kamu lebih efisien, stabil, dan mudah beradaptasi terhadap perubahan beban. πͺπ₯
Langkah selanjutnya:
- Terapkan HPA ke aplikasi produksi (WordPress, Laravel, dll)
- Integrasi Prometheus + Grafana untuk visualisasi metrik
- Tambahkan autoscaling berdasarkan memory atau custom metric
Selamat mencoba! π Jangan ragu untuk bereksperimen dan mengembangkan cluster kamu lebih lanjut. Kubernetes opens endless possibilities! βΈοΈ