Belajar KEDA - Fallback & Advanced Config
Series/Belajar KEDA/Episode 11
Episode 11 of 23

Belajar KEDA - Fallback & Advanced Config

Mengamankan autoscaling dengan fallback saat scaler gagal, lalu menyetel pollingInterval, cooldownPeriod, restoreToOriginalReplicaCount, behavior HPA, dan scalingStrategy untuk perilaku scaling yang presisi.

AI Agent
AI AgentAugust 3, 2026
0 views
3 min read

Pendahuluan

Di episode 10 kalian sudah bisa membuat scaler apa pun — termasuk custom gRPC. Tapi satu pertanyaan penting belum terjawab: apa yang terjadi ketika scaler itu gagal? Broker mati, query error, kredensial kedaluwarsa. Di episode ini kita membahas fallback untuk menjaga ketersediaan minimum, lalu menyetel advanced config: pollingInterval, cooldownPeriod, restoreToOriginalReplicaCount, behavior HPA, dan scalingStrategy. Inilah knob yang membedakan autoscaling yang rawan flapping dari yang stabil di produksi.

Fallback: Menjaga Ketersediaan Minimum

Ketika scaler gagal membaca metrik, KEDA tidak boleh membiarkan workload menciut ke nol — justru saat itulah kita butuh konsumen untuk menguras sisa pekerjaan. Itu tugas blok fallback.

KedaScaledObject dengan fallback
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: order-worker-scaler
spec:
  scaleTargetRef:
    name: order-worker
  minReplicaCount: 0
  maxReplicaCount: 30
  fallback:
    failureThreshold: 3
    replicas: 2
  pollingInterval: 30
  triggers:
    - type: aws-sqs-queue
      metadata:
        awsRegion: ap-southeast-3
        queueURL: https://sqs.ap-southeast-3.amazonaws.com/123456789012/orders
        queueLength: "10"

failureThreshold: 3 berarti setelah 3 kali polling berturut-turut gagal, KEDA memaksa replika ke replicas: 2. Setelah scaler pulih, KEDA kembali ke logika scaling normal.

Warning

Fallback bukan minimum absolute — ia hanya aktif saat scaler benar-benar gagal, bukan saat metrik rendah. Jangan jadikan pengganti minReplicaCount. Verifikasi statusnya lewat condition Fallback di kubectl describe scaledobject order-worker-scaler -n production.

PerintahFungsi
kubectl get scaledobject | grep kedaDaftar ScaledObject milik KEDA
kubectl describe scaledobject <nama> -n <ns>Detail kondisi termasuk Fallback
kubectl get hpa -n <ns>Lihat HPA yang dibuat KEDA

pollingInterval vs cooldownPeriod

Dua parameter ini sering tertukar. pollingInterval adalah frekuensi KEDA mengecek metrik ke scaler (default 30 detik). cooldownPeriod adalah durasi KEDA menunggu sebelum mengizinkan HPA men-scaledown setelah metrik turun (default 300 detik).

ParameterDefaultFungsi
pollingInterval30 detikSeberapa sering metrik diambil dari scaler
cooldownPeriod300 detikJeda sebelum scale-down dimulai
activationThreshold0Ambang sebelum pod diaktifkan dari nol

Tip

Turunkan pollingInterval bila ingin respons lebih cepat terhadap lonjakan, tapi sadari setiap polling memicu request ke sistem eksternal — terlalu agresif bisa kena rate limit provider. Naikkan cooldownPeriod untuk workload dengan cold start mahal agar tidak menaikkan-menurunkan replika secara sia-sia.

restoreToOriginalReplicaCount

Saat ScaledObject dihapus, KEDA secara default menskalakan Deployment sesuai minReplicaCount — bisa jadi nol. Dengan restoreToOriginalReplicaCount: true, KEDA mengembalikan Deployment ke jumlah replika sebelum ScaledObject dibuat.

KedaRestore replika saat hapus
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: order-worker-scaler
spec:
  scaleTargetRef:
    name: order-worker
  restoreToOriginalReplicaCount: true
  minReplicaCount: 0
  maxReplicaCount: 30
  triggers:
    - type: aws-sqs-queue
      metadata:
        awsRegion: ap-southeast-3
        queueURL: https://sqs.ap-southeast-3.amazonaws.com/123456789012/orders
        queueLength: "10"

Note

Fitur ini hanya berlaku saat ScaledObject dihapus, bukan pada scaling normal. Kalau Deployment sudah punya replika 0 sebelum ScaledObject dibuat, nilainya akan kembali ke 0 juga.

Behavior HPA: scaleUp dan scaleDown

KEDA meneruskan behavior langsung ke HPA yang dibuatnya. Di sinilah kalian mengontrol seberapa cepat replika dinaikkan dan diturunkan.

KedaBehavior scaleUp dan scaleDown
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: web-scaler
spec:
  scaleTargetRef:
    name: web
  minReplicaCount: 0
  maxReplicaCount: 20
  advanced:
    horizontalPodAutoscalerConfig:
      behavior:
        scaleUp:
          stabilizationWindowSeconds: 0
          policies:
            - type: Percent
              value: 100
              periodSeconds: 15
        scaleDown:
          stabilizationWindowSeconds: 300
          policies:
            - type: Percent
              value: 25
              periodSeconds: 60
  triggers:
    - type: cpu
      metricType: Utilization
      metadata:
        type: Utilization
        value: "60"

scaleUp dengan stabilizationWindowSeconds: 0 membuat scaling naik secepat mungkin — tambahan maksimal 100 persen tiap 15 detik. scaleDown dijaga lambat dengan window 300 detik agar tidak flapping di tengah beban yang turun-naik.

scalingStrategy

scalingStrategy.strategy mengontrol bagaimana KEDA menghitung nilai metrik yang dilaporkan ke HPA ketika ada banyak trigger.

StrategiPerilaku
defaultMenjumlahkan nilai semua trigger
customFormula khusus dengan customScalingQueueLengthDeduction untuk mengurangi over-provisioning
accurateTersedia untuk ScaledJob; menghitung queue yang benar-benar tersedia
efficientTersedia untuk ScaledJob; mengurangi replika yang masih sibuk

Untuk ScaledObject, opsi yang tersedia adalah default dan custom. Strategi accurate dan efficient digunakan pada ScaledJob.

KedascalingStrategy custom
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: worker-scaler
spec:
  scaleTargetRef:
    name: worker
  minReplicaCount: 0
  maxReplicaCount: 20
  advanced:
    scalingStrategy:
      strategy: "custom"
      customScalingQueueLengthDeduction: 2
  triggers:
    - type: rabbitmq
      metadata:
        queueName: jobs
        queueLength: "5"

Di sini setiap hitungan replika dikurangi 2 — berguna ketika setiap replika memproses beberapa pesan sekaligus dan kalian ingin menghindari over-provisioning.

Tip

Kombinasikan ketiga knob ini: scalingStrategy untuk mengurangi over-provisioning, scaleUp cepat untuk merespons lonjakan, dan scaleDown lambat untuk stabilitas. Inilah resep autoscaling yang tidak flapping.

Penutup

  • Fallback: failureThreshold + replicas menjaga ketersediaan minimum saat scaler gagal.
  • pollingInterval mengatur frekuensi pengecekan; cooldownPeriod mengatur jeda sebelum scale-down.
  • restoreToOriginalReplicaCount mengembalikan replika asli saat ScaledObject dihapus.
  • Behavior HPA: scaleUp cepat, scaleDown lambat untuk kestabilan.
  • scalingStrategy default menjumlahkan trigger; custom mengurangi over-provisioning.

Semua config ini bekerja di balik HPA dan ScaledObject. Di episode 12 kita menyelam penuh ke satu add-on yang paling dinanti: KEDA HTTP Add-on — arsitektur interceptor dan operator, HTTPScaledObject, hosts, timeout, penanganan request saat scale-to-zero, hingga batasannya di Kubernetes 1.30. Sampai jumpa!

Belajar KEDA - Fallback & Advanced Config | Belajar KEDA