Cases3 cases
1 to 3 of 3
IL-0145A power sag and chiller failure in one Australia East availability zone took down the AKS control plane's compute and its non-zone-redundant SQL Database operation queue, blocking AKS create, update and delete operations in Australia East and Australia SoutheastMicrosoft Azure2023- Symptoms
From about 10:30 UTC on 30 August 2023, customers had trouble accessing or using Azure, Microsoft 365 and Power Platform services in Australia East. The affected Azure services included Azure Kubernetes Service (AKS) along with storage, SQL Database, Cosmos DB, virtual machines and Azure Resource Manager.
- Trigger
At 08:41 UTC a lightning strike on electrical infrastructure about 18 miles away caused a utility voltage sag that shut down the cooling chillers of datacenters in one Australia East availability zone; 13 chillers failed to restart automatically and five could not be restarted, so two data halls overheated and their infrastructure was shut down.
- Root cause
- Component
- Contributing factor
- Detection
Cosmos DB impact was detected by monitoring at 10:47 UTC, first automated communications went to Azure Service Health at 10:48 UTC, the public Azure Status page was updated at 11:30 UTC, and all subscriptions in Australia East were sent portal communications at 11:36 UTC.
- Remediation
- shut down the remaining networking, compute and storage in the two affected data halls so the chilled water loop could cool down
- restarted the five chillers manually at 12:12 UTC
- restored power to all hardware by 15:10 UTC and brought infrastructure back in phases
- restored AKS operations through the recovery of the SQL Database operation queue, with no other mitigation
- Action items
- AKS: convert all operation queue SQL Database databases to be zone redundant (estimated September 2023)
- AKS: replace all cross-region SQL Database queue usage with zone-redundant Service Bus queues (estimated September 2023)
- Change the control timing logic of the Chiller Management System so chillers do not fail to restart after voltage fluctuations
- Change the emergency procedure for manual restarts of simultaneous chiller failures from an adjacent sequence to a load-based sequence per data hall
- Increase technician staffing at the datacenter as a temporary measure for manual chiller restarts
- Storage: optimise the large-scale recovery process and update troubleshooting guides (estimated December 2023)
- Azure Service Fabric: improve reliability of SQL Database tenant ring recovery (estimated December 2023)
- SQL Database: review the trigger criteria of auto-failover groups (estimated October 2023)
- SQL Database: upgrade internal tooling to enable mass migration of databases (estimated December 2023)
- Cosmos DB: optimise Service Managed Failover for single-region-write accounts (estimated November 2023)
- ARM: complete the migration of its storage layer to the zonally redundant architecture (estimated December 2023)
- Incident management: harden readiness, process and playbook for power-down scenarios (estimated October 2023)
- Lessons
A control plane spread across availability zones still fails with a zone when one of its dependencies, here the SQL Database operation queue, is not zone redundant. When a second region uses the same database, the failure crosses into that region as well. Workloads already running were not expected to be affected; what stopped was everything that needs the managed service's control plane, such as scaling and cluster changes.
IL-0172An AWS Tokyo data centre cooling failure took down 6 of 60 CockroachDB nodes on Kubernetes within 22 minutes, and ranges lost quorum because the Helm-deployed cluster had no availability zone locality configuredDevsisters2021- Symptoms
During a team dinner, a Slack alert reported that one node of the CockroachDB cluster behind Cookie Run: Kingdom had gone down. The DevOps engineers were not worried at first, because CockroachDB is built to survive the loss of some nodes.
- Trigger
A cooling system failure in an AWS Tokyo region data centre overheated the servers in one availability zone, which held CockroachDB nodes.
- Root cause
- Component
- Contributing factor
- Detection
A Slack alert reported that a database node had gone down.
- Remediation
- copied the data outside the broken ranges into new tables with INSERT INTO ... SELECT queries that skipped the affected ranges
- ran debug unsafe-remove-dead-replicas together with Cockroach Labs engineers, recovering one of the two lost data ranges
- restored the last data range with the storage-layer recovery method from the previous incident
- Action items
- Configure CockroachDB Locality so data is spread evenly across availability zones
- Deploy with one chart and a separate values file per availability zone to set Locality
- Replace nodes by adding Locality-configured nodes, confirming replicas in every zone, then retiring the old nodes
- Lessons
A replication factor sized for random instance retirements does not protect against a whole availability zone failing; for a game of this scale a multi-AZ placement is required, not optional. Keeping one uniform Helm chart made zone topology hard to set, which is part of why it was left out. A repetitive chart with a values file per zone sets it reliably.
IL-0193A GCP persistent disk degradation took down a Cassandra StatefulSet whose OrderedReady policy blocked recovery, and Metrictank could not reconnect to the recreated pods, causing a 23-hour Graphite query outageGrafana Labs2019- Symptoms
An alert fired because some Metrictank instances could not drain their write queue, which meant they could not write to Cassandra. Google had not yet published an incident, but a team member's Discord server, also hosted on GCP, was down, which pointed at GCP; Google confirmed an SSD persistent disk incident about 90 minutes after it began.
- Trigger
A Google Cloud incident in which SSD persistent disks performed so poorly that many I/O operations failed for an extended period.
- Root cause
- Component
- Contributing factor
- Detection
An alert that Metrictank write instances could not flush their write queue to Cassandra. Error rates alone rose too slowly to notice quickly, because most queries were served from memory.
- Remediation
- Added compute nodes hoping new nodes could attach the disks, which did not work
- Deleted and recreated the Cassandra StatefulSet with an updated pod management policy, so all pods but one started
- Raised Kafka topic retention to avoid data loss during the long downtime
- Temporarily added nodes so Metrictank restarts were not slowed by CPU starvation
- Restarted all Metrictank instances, which took more than 20 hours, so they connected to the new Cassandra IPs
- Action items
- Re-instantiate the gocql connection in Metrictank when it is detected dead, so it reconnects even when all Cassandra IPs change
- Fix the Metrictank write-queue deadlock by updating an internal data structure with atomics instead of a lock
- Lessons
An OrderedReady StatefulSet cannot recover past a single pod whose volume will not attach; when every pod is down, the ordering that protects normal start-up blocks the whole cluster. A client that learns peer addresses only from live peers needs a way to go back to the service name when all peers are replaced at once. A long-tolerated bug with a config workaround can surface at the worst time; this one turned out to have a simple fix. Writing incoming data to a Kafka write-ahead log first meant all data could still be ingested after recovery, and Kafka on non-SSD disks escaped the disk incident. With both Metrictank bugs fixed, the team expects a similar event to take less than 3 hours to recover from instead of 23.
These 3 cases involve Application database and AKS control plane. 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 cause1
Cloud provider outage3 cases
- Component
- Contributing factor
- Organisation
IL-0145A power sag and chiller failure in one Australia East availability zone took down the AKS control plane's compute and its non-zone-redundant SQL Database operation queue, blocking AKS create, update and delete operations in Australia East and Australia SoutheastMicrosoft Azure2023IL-0172An AWS Tokyo data centre cooling failure took down 6 of 60 CockroachDB nodes on Kubernetes within 22 minutes, and ranges lost quorum because the Helm-deployed cluster had no availability zone locality configuredDevsisters2021IL-0193A GCP persistent disk degradation took down a Cassandra StatefulSet whose OrderedReady policy blocked recovery, and Metrictank could not reconnect to the recreated pods, causing a 23-hour Graphite query outageGrafana Labs2019