IL-0464 IONOS Cloud · 2026-03-14kubernetes
IONOS Managed Kubernetes control planes went unreachable for minutes at a time as their shared etcd grew and fragmented
IONOS Managed Kubernetes keeps the state of many customer control planes in shared etcd databases. A few clusters stored unusually large amounts of data there, mainly security scanning reports and policy audit records, along with many event and autoscaling objects; on one affected database instance three clusters held about 64% of the stored data. The compaction interval that reclaims unused space could not keep up with the write rate, so old revisions piled up and the database grew past its normal size, and fragmentation added roughly 40% of allocated space beyond the data in use. This pushed the database toward its hard storage limit, where it would have gone read-only and taken down every control plane on that instance. Together these caused stalls during database maintenance cycles that disrupted the Kubernetes API server for several minutes each time.
On 16 March the team identified a resource constraint within etcd as the root cause. It defragmented the affected database instances, reclaiming about 3–4 GiB each, shortened their compaction intervals and rolled changes out to the affected clusters; DBaaS, the AI Model Hub and the Container Registry recovered during the day, and the final changes were applied to all affected clusters by 19:59 UTC. The incident was marked resolved on 17 March.
- Severity
- –
- Scope
- A subset of customer Managed Kubernetes control planes periodically unreachable; DBaaS (PostgresDB on Kubernetes), the AI Model Hub and the Container Registry were also affected
- Users affected
- –
- Region
- DE/FRA (Managed Kubernetes)
- Time to detect
- –
- Time to resolve
- –
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.
On 16 March the incident widened to other services: an increased error count from PostgresDB on Kubernetes in DBaaS, the AI Model Hub, and the Container Registry, where customers had trouble pulling and pushing images. The stalls came during database maintenance cycles of the shared control plane database, and the team described the remaining problem as recurring load spikes.
Root cause
Root cause Capacity exhaustion
- Trigger
- –
Detection
–
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
Lessons
–
Sources
- https://status.ionos.cloud/incidents/h9x5s66m4r28 · official-status · archived copy
Related cases
IL-0204An 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 serverRender · 2024same root cause · shared Kubernetes API server, etcd
IL-0194After a kube-apiserver restart, pod LIST requests from every pod of a Vector DaemonSet nearly tripled etcd memory and restarted all master nodesPalark · 2023same root cause · shared Kubernetes API server, etcd
IL-0076Kubernetes masters went down after Dex filled etcd with AuthRequest objects and deleting its namespace started an endless list-and-timeout loopFullstaq · 2019same root cause · shared Kubernetes API server, etcd
IL-0075Kubernetes API servers pegged on CPU when the cluster grew to about 290 nodes, traced to Datadog agents polling the APICivis Analytics · 2019same root cause · shared Kubernetes API server, etcd
IL-0465IONOS Container Registry image pushes and pulls failed with 504 Gateway TimeoutIONOS Cloud · 2026same root cause · shared Managed Kubernetes control plane and provider API
IL-0168Simultaneous cluster auto-upgrades overloaded Scaleway's Kubernetes API, and a node authentication retry loop kept Kapsule and Kosmos nodes NotReady in FR-PARScaleway · 2024same root cause · shared Kubernetes API server
IL-0195The 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 agentsPalark · 2023same root cause · shared Kubernetes API server
IL-0165Some LKE users in Frankfurt could not reach their kube-apiservers with kubectl after backend services failed under memory constraintsLinode · 2023same root cause · shared Kubernetes API server
IL-0002CI builder pods could not get AWS IAM credentials because kubelet fell minutes behind its API rate limitZalando · 2019same root cause · shared Kubernetes API server
IL-0031Kubernetes API server OOM-killed, leaving the Skipper ingress without routes; the talk points to a misconfigured CronJob manifestZalando · 2018same root cause · shared Kubernetes API server
Check your cluster for this
For AI tools and scripts
- This case as JSON: https://incidentlib-api.benchlet.com/cases/IL-0464
- The cases most like it: https://incidentlib-api.benchlet.com/cases/IL-0464/similar
- MCP server (Streamable HTTP, no key):
https://incidentlib-mcp.benchlet.com/mcp
The API needs no key. The MCP server offers search_incidents, get_incident, list_incidents, get_topic and vocab; both are explained on API and MCP.