The night Spot capacity disappeared
Two regions, forty quiet minutes, and a fallback path that never triggered.
- status
- resolved
- duration
- 3h 12m
- impact
- jobs delayed, none lost
- systems
- karpenter · spot · nats
summary
At 02:14 Central the scheduler stopped getting Spot capacity in two regions at once. Nothing failed loudly. Jobs waited in the queue, the autoscaler kept asking for nodes it could not get, and latency climbed for forty minutes before an alert fired.
This is what happened, why the on-demand fallback did not engage, and the two changes we made afterward.
timeline
- 02:14+00:00triggerSpot requests start failing in two regions
- 02:54+00:40alertQueue-latency alert fires
- 03:20+01:06mitigationOn-demand pool scaled by hand
- 05:26+03:12resolvedBacklog drained; incident closed
why the fallback stayed quiet
The fallback watched for failed launches. Here the launches never failed. They stayed pending, and a pending node looks healthy to anything that only counts errors.
fallback.trigger = launches.failed > 0 // before
fallback.trigger = pending.age > 90s // afterwhat changed
We now alert on how long work has been waiting rather than on error counts. Capacity is also treated as a signal in its own right: when it stops arriving, the router shifts work before the queue shows it.