Keda HPA
๐ How KEDA Scales Workloads in Kubernetesยถ
KEDA (Kubernetes Event-driven Autoscaling) extends Kubernetes' native Horizontal Pod Autoscaler (HPA) to enable event-driven scaling based on external metrics and event sources, not just CPU or memory.
โ๏ธ How KEDA Worksยถ
- Scalers
KEDA uses scalers to monitor external sources (e.g., Kafka, RabbitMQ, Prometheus, AWS SQS, custom metrics). - Metrics Adapter
KEDA exposes these external metrics to Kubernetes via a metrics adapter. - ScaledObject
You define aScaledObjectresource that links your deployment to a scaler and specifies scaling rules. - Autoscaling
When the scaler detects activity (e.g., queue length, message count), KEDA updates the HPA for your deployment, triggering scale-out or scale-in as needed. - Zero to N Scaling
KEDA can scale deployments down to zero when there is no activity, and back up when events arrive.
KEDA vs. Native HPA
Native HPA only supports scaling based on CPU/memory or custom metrics available inside the cluster.
KEDA enables scaling based on external events, making it ideal for workloads like queue consumers or scheduled jobs.
๐ Example: Scaling on Queue Lengthยถ
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: my-kafka-consumer
spec:
scaleTargetRef:
name: my-consumer-deployment
minReplicaCount: 0
maxReplicaCount: 10
triggers:
- type: kafka
metadata:
bootstrapServers: my-kafka:9092
topic: my-topic
consumerGroup: my-group
lagThreshold: "100"
- When lag > 100: KEDA increases pod replicas.
- When lag is low: KEDA scales pods down to zero.
KEDA vs. Native HPA
Native HPA only supports scaling based on CPU/memory or custom metrics available inside the cluster. KEDA enables scaling based on external events and metrics, making it ideal for event-driven workloads.
๐ ๏ธ Troubleshooting KEDA Scalingยถ
- Ensure the KEDA operator is running in your cluster.
- Check that your
ScaledObjectis correctly configured and references the right deployment. - Use
kubectl get scaledobjectandkubectl describe scaledobject <name>to inspect status and errors. - Review KEDA operator logs for detailed diagnostics.
Namespace Best Practices
Deploy KEDA in a dedicated namespace (e.g., keda) and ensure your workloads have the correct RBAC permissions for event sources.