KEDA Pressure Test: "Ready" Does Not Mean "Usable"
A four-step pressure test pattern for KEDA ScaledObjects, plus the initialization lag that makes Ready status unreliable.
Four-Step Pressure Test
A repeatable pattern for testing KEDA ScaledObject behavior before production.
Cold vs Warm Comparison
Run the same burst size twice:
- Cold: pods are still scaling. KEDA just triggered.
- Warm: all pods are Ready.
Compare the results. If cold fails and warm succeeds, the problem is startup time, not pod capacity.
After Each Burst, Check Four Things
- HTTP status distribution (200 vs 502/503)
- Latency range (p1 to p99)
- Error counter (
chrome_errors_total) - Pod count and ScaledObject ACTIVE status
“Ready” Does Not Mean “Usable”
A resource can report “Ready” before it is usable. The status field is a self-report from one component. Other components can still lag behind.
The gap between “status says Ready” and “works” is the initialization lag.
The Age Check Rule
When a resource fails, its age tells you how to respond.
The GPU node showed Ready, but the GPU was not available. I thought it was a hardware failure. Two minutes later, all three Chrome pods were running. The node was initializing the whole time.
References:
- Run GPUs in GKE Standard Node Pools
- GKE Active Buffer
- Prometheus Metrics Autoscaling with KEDA
- How to Use KEDA to Scale Pods Using Prometheus
Related: see the capacity formula these tests validate, or go back to the series overview.