Incident Library
Applied filters SymptomControl plane unresponsiveDomainKubernetesClear allEvery case under the filters, with no sentence; newest first.
Suggested filters Search, and the values found in your words appear here.

Graph

  • Root cause
  • Component
  • Symptom
  • Contributing factor
  • Case

Cases26 cases

1 to 5 of 26

  1. Symptoms

    On 19 August 2026 the first equipment-level signs in Nebius's us-central1 region appeared around 09:40 UTC: the InfiniBand fabric degraded and GPU over-temperature alerts began to accumulate. Customer reports followed shortly after 10:00. At 10:15 on-call engineers were paged on critical component temperature alerts, and the incident was declared at 10:21.

    Trigger

    A storm-related event at the data center building took the building management system offline and shut down the chilled-water cooling loop.

    Root cause
    Component
    Contributing factor
    Detection

    No facility-level alert fired, because the storm also disabled the building management system that monitors the facility. Engineers acted on component over-temperature alerts that paged on-call at 10:15 UTC, after InfiniBand degradation, GPU over-temperature alerts and customer reports; the temperature rise from about 09:15 was visible on dashboards but had no alert.

    Remediation
    • had the facility operator switch cooling to manual bypass mode and opened rack rear doors to vent heat
    • re-energised tripped racks, control-plane racks first
    • restored the regional infrastructure control plane by manual intervention
    • restarted block-storage host components to clear stale disk attachment state
    • raised the VM recovery rate limits by hand for the region-scale recovery
    • started the affected Managed Kubernetes control-plane instances by hand
    • applied a controlled stop and start to control-plane instances whose data disk had been left unattached
    • identified and started 104 customer VMs that the incident had stopped
    Action items
    • Complete a joint resilience review with the facility operator covering redundancy of facility-management and monitoring systems, cooling that keeps running when those fail, electrical protection of cooling equipment and on-site response
    • Add facility-level environmental alerting on cooling plant state and room temperature trend that pages on-call independently of the building management system
    • Set up a documented emergency escalation path with the facility operator, with an on-call contact tree and guaranteed response times
    • Define an emergency heat-load reduction procedure with criteria, ownership and mechanics for shutting down or degrading workloads during a cooling loss
    • Establish a dependency-ordered region cold-start procedure with clear ownership for each service layer
    • Run regular region-scale recovery drills that cover VMs, storage attachments and Managed Kubernetes clusters
    • Fix the disk-attachment bug that extended the Managed Kubernetes outage and deploy the fix to all production regions
    • Improve the recovery policies Compute users can configure, and move all Managed Kubernetes control-plane nodes to the improved policy
    • Automate reconciliation of stale storage attachment state after abrupt host failures
    • Remove in-region dependencies from monitoring startup and recovery, and extend cross-region monitoring
    • Make regional health checks used for global traffic management reflect real service availability
    Lessons

    Facility monitoring that runs on the same system it watches goes silent in exactly the failure it should report, and with no alert on the room temperature trend there was no practical window to shed heat load in a controlled way. A cold start of a whole region exercised recovery paths built for isolated failures: single-attempt VM recovery, conservative rate limits and stale disk attachments all needed manual work. The longest part of the outage was restoring customer resources, Managed Kubernetes control planes above all, so Nebius is extending its recovery drills to that layer.

  2. Symptoms

    On 8 May 2026 IONOS Cloud reported "K8s Control Planes not available": some Managed Kubernetes customers in DE/TXL, DE/FRA and DE/FRA/2 had trouble connecting to the control plane and saw degraded Kubernetes functionality. Between 15:22 and 16:12 (UTC+2) applications meant for a new internal development cluster were installed on other customer clusters, which were also modified.

    Trigger

    A routine internal operation onboarded a new Managed Kubernetes development cluster. The scoping configuration file for the onboarding operator failed to reach the deployment branch because of a merge conflict, and at the same time a second change removed the operator from the exclusion list, which deployed it at once.

    Root cause
    Component
    Contributing factor
    Remediation
    • Corrected the onboarding operator so it needs an explicit namespace configuration before acting on any cluster
    • Reconfigured the deployment system to fail deployments when required configuration files are missing
    • Rolled back the identified changes on the affected resources
    • Ran a recovery script, validated in staging, that removed all unintended installations and updates from the affected clusters
    Action items
    • Add a mandatory CI/CD step that confirms all required configuration files reached the target branch before any deployment starts
    • Require additional peer review and change management approval for every deployment that touches production, whatever its size
    • Give teams a way to inform each affected customer in time about the status of post-incident cleanup
    Lessons

    IONOS treats the unintended change to cluster configurations as a failure of the controls that should keep internal operations from affecting customer environments.

  3. Symptoms

    From 14 to 16 March 2026 a subset of customer control planes on IONOS Managed Kubernetes (MK8s) became unavailable again and again, each time for several minutes. While a cluster was unreachable, operations that depend on the Kubernetes API, such as deployments, scaling and health checks, did not work reliably.

    Root cause
    Component
    Contributing factor
    Remediation
    • Defragmented the affected database instances, reclaiming about 3–4 GiB per instance
    • Shortened the database compaction intervals on the affected instances
    • Deployed a fix for the affected AI Model Hub database services
    • Applied final changes to all affected clusters
    Action items
    • Expand monitoring dashboards to show control plane health per database instance
    • Move the highest-volume clusters to dedicated database backends
    • Make incidents of this kind trigger immediate paging
    • Roll the updated compaction interval out to all shared control plane database instances
    • Run automated, scheduled defragmentation jobs on all instances
    • Rebalance clusters across database instances to reduce concentration
    • Contact customers whose clusters write disproportionate data, for example to store large security scan reports outside the control plane database
    • Introduce per-tenant resource quotas and key-count limits on the shared control plane database
    • Re-architect the shared control plane for stronger isolation, with dedicated database instances and better vertical scaling
    • Evaluate full database sharding for customers with consistently high data volumes
    • Hold regular drills on database resource exhaustion and recovery
  4. Symptoms

    From about 21:00 UTC on March 4, 2026, customers using Linodes backed by NVIDIA RTX 4000 Ada GPUs saw the GPUs lock up. At first the problem seemed limited to worker nodes of the Linode Kubernetes Engine (LKE); later Linode confirmed that every Linode with this hardware was affected, while Standard Compute and other GPU instances were not.

    Trigger

    Deployment of a repaired legacy GPU monitoring script, fixed during a routine improvement effort to restore a missing metric on internal observability dashboards.

    Root cause
    Component
    Contributing factor
    Detection

    Customers saw the lockups from about 21:00 UTC; the first status post went up at 02:07 UTC on March 5, about 5 hours after the lockups began.

    Remediation
    • Disabled the monitoring script across the GPU fleet
    • Rebooted the affected nodes
    Action items
    • Take improvement and prevention measures to stop a recurrence; the postmortem does not list them
    Lessons

    A monitoring script can take down the hardware it watches. A fix meant only to restore a missing metric brought back a firmware query written for an earlier GPU generation, and on the RTX 4000 Ada architecture that query against an active GPU triggers a lockup. The script ran across the GPU fleet, so every Linode with this GPU was affected in several regions, and the investigation first suspected a regression in the host hypervisor or the GPU firmware.

  5. Symptoms

    The cluster could not be reached from outside. On the control plane node, sudo systemctl status kubelet showed TLS handshake errors such as "http: TLS handshake error from 101.198.0.183:19517: tls: client requested unsupported application protocols" and "http: TLS handshake error from 101.198.0.172:36328: tls: client offered only unsupported versions: [302 301]".

    Trigger

    The leaf certificates that kubeadm had generated for the cluster, valid for one year by default, expired at 2026-02-20 16:16 UTC.

    Root cause
    Component
    Contributing factor
    Detection

    The author could not connect to the cluster from outside and went to the control plane node to read the kubelet logs.

    Remediation
    • renewed all expired certificates with sudo kubeadm certs renew all
    • restarted containerd and the kubelet so the static control plane pods restarted with the new certificates
    • copied the renewed /etc/kubernetes/admin.conf to $HOME/.kube/config
    Lessons

    A kubeadm cluster stops working one year after its leaf certificates were issued unless they are renewed. The first errors seen may be TLS handshake failures or a flag error that does not mention certificates; the decisive message is the x509 expiry in the kube-apiserver log for its connection to etcd. The author recommends checking expiry with kubeadm certs check-expiration and renewing from 30 days before. kubeadm upgrade apply renews the certificates too, so a cluster upgraded at least once a year avoids the problem; a cluster run for a long time without upgrades can renew from cron, for example with 0 3 1 1 * root kubeadm certs renew all && systemctl restart kubelet in /etc/cron.d/kubeadm-cert-renew.

Check your cluster for this

These 26 cases involve Kubernetes API server and etcd. 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 cause9

Dependency failure2 cases

Organisation
  1. IL-0133 A storm shut down cooling at Nebius's us-central1 data center, and a disk hot-plug bug kept Managed Kubernetes control planes down for hours after power returned
    Nebius2026
  2. IL-0162 LKE users could not reach their cluster control planes or the LKE Dashboard because an earlier database update made the internal LKE DNS service hang
    Linode2025

Faulty deployment2 cases

  1. IL-0234 An onboarding operator deployed without its scope file installed dev applications on other IONOS Kubernetes clusters
  2. IL-0160 A repaired legacy GPU monitoring script sent a firmware query that triggers a race condition in the GPU System Processor of NVIDIA RTX 4000 Ada GPUs, locking up GPU Linodes and LKE worker nodes in several regions
    Linode2026

Capacity exhaustion8 cases

  1. IL-0464 IONOS Managed Kubernetes control planes went unreachable for minutes at a time as their shared etcd grew and fragmented
  2. IL-0204 An etcd memory spike overloaded the control plane of a Render Frankfurt cluster, and DNS then failed because CoreDNS ran on the rebooted control plane nodes and could not start without the API server
    Render2024
  3. IL-0195 The kube-apiservers of a cluster with more than 200 nodes ran out of memory and crashed one after another under mass LIST requests from Cilium agents
    Palark2023
  4. IL-0165 Some LKE users in Frankfurt could not reach their kube-apiservers with kubectl after backend services failed under memory constraints
    Linode2023
  5. IL-0194 After a kube-apiserver restart, pod LIST requests from every pod of a Vector DaemonSet nearly tripled etcd memory and restarted all master nodes
    Palark2023
  6. IL-0076 Kubernetes masters went down after Dex filled etcd with AuthRequest objects and deleting its namespace started an endless list-and-timeout loop
  7. IL-0075 Kubernetes API servers pegged on CPU when the cluster grew to about 290 nodes, traced to Datadog agents polling the API
  8. IL-0031 Kubernetes API server OOM-killed, leaving the Skipper ingress without routes; the talk points to a misconfigured CronJob manifest

Certificate or credential expiry3 cases

  1. IL-0183 kubeadm's one-year leaf certificates expired, so kube-apiserver could not reach etcd, restarted in a loop and left the cluster unreachable
  2. IL-0113 The managed GKE control plane of Webhook Relay's main cluster failed because its API server certificates had never been rotated, and a manual credential rotation reported success without taking effect
  3. IL-0184 JupyterHub's KubeSpawner could not create containers and kubectl was refused because the API server and other internal certificates of a kubeadm cluster had expired
    dbhang2021

Software defect2 cases

  1. IL-0138 A failed Nvidia driver build left broken kernel packages on the only Kubernetes master node, which hit a kernel panic on reboot after a power outage and took the homelab cluster down for six days
  2. IL-0077 EKS cluster went read-only for over seven hours after Kyverno ephemeralreports filled the etcd database past its size limit

Configuration change5 cases

  1. IL-0005 A new telemetry service overloaded the Kubernetes API servers of large clusters and broke DNS-based service discovery for all OpenAI services
    OpenAI2024
  2. IL-0118 A global change to Kubernetes namespace labels made the networking layer recompute metadata and overwhelmed the control planes of three of OpenAI's largest GPU clusters
    OpenAI2024
  3. IL-0152 An incorrect configuration applied during maintenance made an internal infrastructure cluster automatically delete the control planes of 200 DOKS clusters in FRA1
  4. IL-0458 Toolforge Kubernetes API server failed to start after a restart, logging "etcd cluster is unavailable or misconfigured"
  5. IL-0008 An unresponsive OPA validating webhook crash-looped the API server during a GKE master upgrade, and node auto-repair then recreated every node

DNS or network fault1 case

Contributing factor
–
Organisation
  1. IL-0154 Line cards on an SFO3 core router rebooted together and halved backbone capacity, and DOKS nodes whose guest networking did not recover stayed NotReady with degraded API servers until all affected nodes in the SFO3 DOKS fleet were recycled

Cloud provider outage2 cases

  1. IL-0145 A 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 Southeast
  2. IL-0469 The managed Azure Kubernetes API server for the data100 hub stopped answering, so the stopped hub pod was not recreated

unknown1 case

Organisation
  1. IL-0059 Single-master Kubernetes control plane kept dying because the kubelet restarted a healthy etcd on a failing kubeadm liveness probe