Cases2 cases
1 to 2 of 2
- Symptoms
A production EKS cluster on Kubernetes 1.30 went into read-only mode: the API server rejected every request that would change an object, such as creating pods or scaling deployments, and deleting objects to free space did not work either.
- Trigger
Kyverno 1.12 kept creating ephemeralreports objects that piled up in etcd until the database passed EKS's size limit.
- Root cause
- Component
- Contributing factor
- Detection
The cluster rejected writes; the audit logs carried the "etcdserver: mvcc: database space exceeded" error.
- Remediation
- AWS raised the etcd storage limit from 8/10GB to 12GB to unlock writes
- an AWS engineer deleted the leaked Kyverno ephemeralreports objects directly from etcd
- Action items
- Monitor the etcd database size with apiserver_storage_size_bytes and never let it reach 8GB
- Upgrade Kyverno 1.12 to 1.12.4, which fixes the ephemeralreports pile-up, or disable reporting for admission events and tune --aggregationWorkers
- Lessons
On EKS, once etcd hits its size limit the cluster becomes read-only and only AWS can clean it up, so cleanup scripts must run before the limit is reached. Watch the etcd database size and object counts per resource, especially for controllers that create report objects.
IL-0174After an upgrade to Fluent Bit 2.0, logging sidecars that used the Kafka output plugin kept restarting with SIGSEGV because the plugin read a corrupted record as a map without checking its typeHyperconnect2023- Symptoms
Hyperconnect upgraded the Fluent Bit sidecar of one service with little user impact to Fluent Bit 2.0 and watched it for several days. Only the containers that used the Kafka output plugin were being restarted, each time on SIGSEGV. The stack trace printed at the crash pointed into the Kafka output plugin, but no core file was left behind, because Fluent Bit ran inside Kubernetes.
- Trigger
Upgrading the Fluent Bit logging sidecar to version 2.0 (the 2.0.3 image) on a service with low user impact.
- Root cause
- Component
- Contributing factor
- Detection
The team monitored the upgraded sidecars for several days after the upgrade and saw that the containers using the Kafka output plugin were restarting with SIGSEGV.
- Remediation
- patched the Fluent Bit Kafka output plugin to skip data that is not a map before calling produce_message()
- ran a custom build with the patch as the sidecar, which stopped the segmentation faults
- submitted the patch upstream as fluent-bit pull request 6452, which was merged eight days later
- Lessons
A segmentation fault in a container can be debugged from its core file, but Kubernetes does not keep one by default: a volume mounted into the pod and a core_pattern pointing into it on the node are needed first. The debug image of the same version, run locally on the same CPU architecture with the matching source checkout, gives a gdb environment that matches production. Core files contain part of the process memory and may hold sensitive data, so they should be shared with care.
These 2 cases involve etcd and Kubernetes API server. 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
Software defect2 cases
- Contributing factor
- Organisation
IL-0077EKS cluster went read-only for over seven hours after Kyverno ephemeralreports filled the etcd database past its size limitMarcin Cuber2024IL-0174After an upgrade to Fluent Bit 2.0, logging sidecars that used the Kafka output plugin kept restarting with SIGSEGV because the plugin read a corrupted record as a map without checking its typeHyperconnect2023