Cases1 case
1 to 1 of 1
IL-0007The AWS VPC CNI could not assign IP addresses to pods as an EKS cluster ran out of IPv4 spaceAdevinta2024- Symptoms
One evening the platform team that runs SCHIP, Adevinta's internal runtime platform on Kubernetes, was paged because some DaemonSets were failing. Checking the pod status showed this error from the network plugin: name="aws-cni" failed (add): add cmd: failed to assign an IP address to container
- Trigger
Not stated for the first page. It came in June, during the migration from SCHIP's kube-aws-based clusters to EKS-based clusters; the write-up mentions spikes of pods, such as a job that goes rogue or failing jobs that keep their IPs, as ways a cluster can run out.
- Root cause
- Component
- Contributing factor
- Detection
A pager alert that some DaemonSets were failing. The on-call engineer checked the pod status and found the aws-cni error about failing to assign an IP address.
- Remediation
- Rolled out VPC CNI custom networking with a secondary CIDR to the smaller clusters from late August
- Paused the EKS migration in September while available IPs were very low
- Rolled out custom networking to the rest of the fleet
- Added the --reserved-enis parameter to the Karpenter deployment
- Action items
- Use VPC CNI custom networking with a secondary CIDR across the whole fleet
- Make Karpenter account for custom networking with the --reserved-enis parameter
- Lessons
For a platform team, the VPC CNI is not ready to scale in production without time spent on capacity planning, and every option has its pros and cons. For large clusters started today, IPv6 is the cheaper and more future-proof option. Do not assume that what works in small clusters will keep working when they grow.
This case involves Karpenter and VPC subnet or pod address range. 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.