KEDA compatibility

Cast AI's Workload Autoscaler is fully compatible with KEDA (Kubernetes Event-driven Autoscaling) when KEDA is configured to scale standard Kubernetes workloads using KEDA ScaledObjects. Our system recognizes and works seamlessly with it, the same as with native Kubernetes HPAs.

How KEDA and Workload Autoscaler work together

KEDA creates HPA objects based on your ScaledObject configurations. Cast AI's Workload Autoscaler integrates with these KEDA-generated HPAs and applies different optimization strategies depending on which metrics are configured in your ScaledObject.

Compatibility

Cast AI's Workload Autoscaler works with KEDA ScaledObjects. KEDA ScaledJobs are not supported.

KEDA scaling optimization strategies

The level of optimization applied by Workload Autoscaler depends on which metric types are configured in your KEDA ScaledObject.

KEDA with only CPU or memory metrics

When your KEDA ScaledObject uses only CPU or memory metrics:

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: cpu-only-scaler
  namespace: default
spec:
  scaleTargetRef:
    name: my-deployment
  triggers:
  - type: cpu
    metadata:
      type: Utilization
      value: "70"

Workload Autoscaler will:

KEDA with CPU/memory combined with custom metrics

When your KEDA ScaledObject combines CPU or memory metrics with custom metrics:

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: combined-metrics-scaler
  namespace: default
spec:
  scaleTargetRef:
    name: my-deployment
  triggers:
  - type: cpu
    metadata:
      type: Utilization
      value: "70"
  - type: prometheus
    metadata:
      serverAddress: http://<prometheus-host>:9090
      threshold: '100'
      query: sum(rate(http_requests_total{deployment="my-deployment"}[2m]))

Workload Autoscaler will:

  • Apply vertical scaling optimization (CPU/memory resource requests)
  • Apply native CPU overhead to maintain headroom below the CPU utilization threshold
  • Not apply replica target corrections
  • Not apply seasonality adjustments
  • Respect KEDA's custom metric scaling decisions

This recognizes that for workloads primarily scaled by custom metrics, increasing CPU resources per pod may not increase throughput proportionally, and aggressive CPU-based corrections could lead to unnecessary resource allocation.

KEDA with only custom metrics

When your KEDA ScaledObject uses only custom metrics (no CPU or memory):

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: prometheus-scaledobject
  namespace: default
spec:
  scaleTargetRef:
    name: my-deployment
  triggers:
  - type: prometheus
    metadata:
      serverAddress: http://<prometheus-host>:9090
      threshold: '100'
      query: sum(rate(http_requests_total{deployment="my-deployment"}[2m]))

Workload Autoscaler will: