Cases2 cases
1 to 2 of 2
IL-0136A deployment that cleared an internal service's caches at peak traffic sent 20 times the normal load to the Azure OpenAI metadata backend in Sweden Central, and health checks that depended on its database restarted instances in a loop for almost six hoursMicrosoft Azure2026- Symptoms
From 10:03 UTC on 29 September 2026, requests to Azure OpenAI Service, Foundry Agent Service, Foundry Models and Azure AI services in Sweden Central failed intermittently, took longer, or returned HTTP 500 and 503 errors. At 10:17 UTC service monitoring raised an alert on elevated failure rates for Azure OpenAI Service requests in the region.
- Trigger
At about 09:38 UTC a planned deployment of an internal service in Sweden Central cleared that service's caches during the region's peak traffic hours.
- Root cause
- Component
- Contributing factor
- Detection
Service monitoring detected elevated failure rates for Azure OpenAI Service requests in the region at 10:17 UTC and alerted the engineering teams; engineers were engaged at 10:28 UTC.
- Remediation
- reconfigured the backend service's automated health check so it no longer depended on remote connectivity, which stopped the restart loop
- Action items
- Reconfigure the backend service's automated health check so it no longer depends on connectivity to its database layer
- Add monitoring and alerting on the load and latency of the caching layer used by the backend service
- Update troubleshooting and procedural guidance for connection exhaustion scenarios for on-call engineers
- Add throttling and rate limiting to protect the backend service from sudden traffic increases (estimated October 2026)
- Increase the resource capacity of the caching layer used by the backend service across regions (estimated October 2026)
- Improve diagnostic metrics and automated detection to identify such issues more quickly (estimated October 2026)
- Partition the caching layer used by the backend service to increase its throughput (estimated December 2026)
- Lessons
A health check that depends on a remote dependency turns a dependency problem into a restart loop: instances that cannot reach the database are killed, the remaining ones take more load and retries, and adding instances or resources does not help until the check itself is changed. Clearing a cache during peak traffic can multiply load on the backend behind it, especially when cache-read defects let lookups bypass the cache. Connection exhaustion was hard to see because the existing network and diagnostic metrics did not show it.
IL-0063VPN outage after recreating a Redis StatefulSet restarted the whole Redis cluster without readiness checksAdGuard VPN2025- Symptoms
The day began with an alert that several instances of the Redis cluster were running out of disk space. That part was fixed quickly. The outage came an hour later: right after the Redis StatefulSet was deleted and recreated at 8:10 UTC, Kubernetes restarted every Redis pod within about five minutes, and problems started to appear.
- Trigger
To make Git match the volumes that had been resized by hand, the Redis StatefulSet was deleted with orphan (non-cascading) deletion and recreated with the new storage template; Kubernetes reconciled the new spec by restarting the entire Redis cluster.
- Root cause
- Component
- Contributing factor
- Detection
An alert about Redis instances running out of disk space started the work; the outage itself showed up as backend errors about Redis connections right after the StatefulSet was recreated.
- Remediation
- made the Redis masters forget obsolete node identities, reset the affected replicas and rejoined them, then waited for replication to catch up
- identified the component that was actually running out of memory, scaled the backend service and raised memory limits for that component
- temporarily relaxed probes so backend instances took traffic immediately instead of flapping between ready and not ready
- reverted the temporary workarounds at 10:00 UTC
- Action items
- Add startup probes so a Redis pod is not marked ready until its dataset is loaded
- Build an own control plane for Redis that handles restarted pods stuck to an old master address
- Reduce dependence on the single Redis cluster: move some important data to other stores, such as a separate Redis cluster per server, and use Kafka for some backend components
- Lessons
The disk resize was not the problem; the cleanup afterwards was. An immutable field pushes operators toward deleting and recreating the controller, and that can set off a full reconcile. Startup and readiness probes are what slow a rolling restart down to a safe pace; without them a distributed store restarts in the most fragile way. Recovery plans must expect a cluster to heal slowly, and dependent services need to degrade gracefully while it does.
These 2 cases involve In-memory cache and Application database. kubegap audits a Kubernetes cluster for gaps like these, read-only, from Claude Code or Codex; its checks cite public reports like the ones in this library.
By root cause2
Faulty deployment1 case
- Component
- Contributing factor
- Organisation
Configuration change1 case
- Contributing factor
- Organisation