Cases2 cases
1 to 2 of 2
- Symptoms
At 13:42 the RootVolUtilisation-Critical alert fired in the high-priority alerts channel. At 14:03 a user reported image pull errors with the message "no space left on device".
- Trigger
Upgrading the EKS Terraform module to version 18, which changed the node launch template, and draining workloads onto the new nodes it created.
- Root cause
- Component
- Contributing factor
- Detection
The RootVolUtilisation-Critical alert fired in the high-priority alerts channel at 13:42, and a user reported "no space left on device" image pull errors at 14:03.
- Remediation
- Uncordoned the old default node group and drained the new nodes to move workloads back
- Identified the launch template change that cut the root volume to 20 GB and applied a fix on the manager and live clusters
- Drained the old node group onto the fixed nodes
- Action items
- Update the runbook to compare launch template changes during an EKS module upgrade
- Create a test setup that pulls images of different sizes, like live
- Update the RootVolUtilisation alert runbook to check the disk space configuration
- Scale CoreDNS dynamically based on the number of nodes
- Investigate whether IPv6 can solve the IP prefix starvation problem
- Add drift testing to identify when a terraform plan shows a change to the launch template
- Set up logging for the CNI and ipamd logs and alerts on errors related to IP prefix starvation
- Lessons
The write-up lists review actions rather than lessons. They aim at two gaps: the launch template changes brought by a module upgrade were not compared or drift-tested before rollout, and there were no CNI or ipamd logs or alerts to show the IP prefix starvation the team suspected during the drain.
IL-0004A new default pod priority let a new Cortex cluster preempt every production ingester in a cascade, taking Grafana Cloud Hosted Prometheus downGrafana Labs2019- Symptoms
On Friday 19 July 2019 the Grafana Cloud Hosted Prometheus service, which is built on the Cortex project, was down for 26 minutes. New error-budget-based Prometheus alerts paged the on-call engineer within 4 minutes of the start.
- Trigger
An engineer created a new dedicated Cortex cluster for a large customer. Its configuration did not include the new pod priorities, so all its pods got the default medium priority, and the Kubernetes cluster did not have enough free resources to fit it.
- Root cause
- Component
- Contributing factor
- Detection
New error-budget-based Prometheus alerts paged the on-call engineer within 4 minutes of the start of the outage.
- Remediation
- Scaled up the underlying Kubernetes cluster to fit both the new and the production Cortex clusters
- Diagnosed and fixed the out-of-memory errors in the authenticating reverse proxies in front of Cortex
- Action items
- Give the production ingesters the high priority class, which should have been done before medium became the default
- Have more people review changes to configuration that is global to the cluster
- Require a design document for every configuration change outside a namespace
- Automate the sizing of the frontend authenticating reverse proxy so it does not run out of memory under overload
- Investigate the default backoff and scaling behaviour of Prometheus to prevent a stampeding herd of retries
- Lessons
Medium should not have become the default priority until the production ingesters had the high priority, and that designation should have reached production sooner. The change was considered too minor for a design document and was only discussed in a GitHub issue; cluster-global configuration needs more scrutiny. On the positive side, once Cortex had enough capacity it recovered by itself, and Grafana Loki helped confirm that the ingesters exited gracefully.
These 2 cases involve CoreDNS and Node launch template. 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
Configuration change2 cases
- Component
- Contributing factor
- Organisation
IL-0019An EKS Terraform module upgrade shrank node root disks from 100 GB to 20 GB and image pulls failed with no space left on deviceIL-0004A new default pod priority let a new Cortex cluster preempt every production ingester in a cascade, taking Grafana Cloud Hosted Prometheus downGrafana Labs2019