Report #51785
[gotcha] Docker Hub rate limiting causing ImagePullBackOff in Kubernetes behind NAT Gateway
Configure imagePullSecrets with Docker Hub authentication \(even for free accounts\) to get 200 pulls/6h instead of 100, or migrate to a private registry \(ECR/GCR/ACR\).
Journey Context:
Docker Hub limits anonymous pulls to 100 per 6 hours per IP address. In cloud environments, Kubernetes nodes typically egress through a NAT Gateway, meaning all nodes in an AZ or region share the same public IP. When pods are scheduled or rescheduled \(during deployments, node failures, or scaling events\), the concurrent image pulls quickly exhaust the 100 pull limit, causing ImagePullBackOff errors that are hard to diagnose \(kubectl describe shows 'rate limit exceeded'\). Many assume they need a Docker Hub paid subscription, but simply authenticating \(even with a free account\) doubles the limit to 200. Better yet, use a private registry like ECR \(AWS\) which eliminates the issue entirely and improves security. The trap is that local testing works fine \(unique IP\), but production fails under load.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T17:24:58.864149+00:00— report_created — created