EKS Cluster Complete Outage (us-east-1)
A deeply technical post-mortem detailing a cascading node failure caused by CNI overlay flooding and ARP cache exhaustion during a massive scaling event.
Executive Summary: At 14:02 UTC, a sudden Horizontal Pod Autoscaler (HPA) scale-out event triggered the provisioning of 800+ new pods across the EKS cluster within 60 seconds. This massive influx of new IP endpoints flooded the Kubernetes CNI overlay network, instantly exhausting the Linux kernel ARP tables on the underlying EC2 worker nodes. The nodes became unreachable, triggering a complete, cascading cluster outage.
Timeline of Events
An external marketing event drove a 10x traffic spike. The HPA correctly identified the CPU load and requested 800+ new pods to be scheduled immediately across the `us-east-1` node groups.
As the CNI (Amazon VPC CNI) attempted to allocate secondary IP addresses for the 800+ new pods, the sheer volume of intra-node communication requests overwhelmed the Linux kernel's ARP cache on the EC2 instances. Nodes started dropping off the cluster.
[ 3412.021115] IPv4: arp_cache: neighbor table overflow!
[ 3415.119200] kubelet[4512]: E1014 14:07:22.123 PLEG: node status update failed
The SRE team identified the ARP exhaustion. We rapidly applied a daemonset to inject new `sysctl` kernel tunables across the fleet, drastically increasing the garbage collection thresholds for the neighbor table.
Architecture & Remediation
sysctl -w net.ipv4.neigh.default.gc_thresh1=1024
sysctl -w net.ipv4.neigh.default.gc_thresh2=4096
sysctl -w net.ipv4.neigh.default.gc_thresh3=8192
- Implement NodeLocal DNSCache to reduce overall DNS lookup burden on the CNI network.
- Create Grafana alerts mapping specifically to the `node_arp_entries` metric to detect overflow before it occurs.