How to fix ContainerCreating in Kubernetes
Pods stuck in ContainerCreating cannot start containers due to image pull issues, volume mount failures, or CNI network problems. Check events for the specific cause.
Quick fix
Fixes ContainerCreating
kubectl describe pod <pod-name>- Check pod events for specific errors
- Diagnose image pull issues
- Check volume and PVC status
- Diagnose network/CNI issues
kubectl describe pod <pod-name>ContainerCreating
What this error means
A pod stuck in ContainerCreating status means Kubernetes is trying to set up the container environment but cannot complete the process. This phase includes pulling images, mounting volumes, and configuring the container network. Unlike CrashLoopBackOff (where containers start then fail), ContainerCreating indicates the container hasn't started at all. The issue is in the infrastructure or configuration required to create the container sandbox.
Typical symptoms
- Pod status shows ContainerCreating for extended periods
- kubectl describe pod shows events but no container start
- Deployment rollout stalls waiting for containers to create
- No application logs available since container never started
- Events may show timeout or waiting messages
- Multiple pods on same node stuck in same state
Common causes
- Container image pull taking too long or failing
- PersistentVolumeClaim not bound to a PersistentVolume
- Volume mount timeout or failure (NFS, cloud storage)
- CNI plugin cannot assign pod IP address
- Missing ConfigMap or Secret referenced by the pod
- Container runtime (containerd/docker) issues
- Node running out of resources or disk space
- Network CIDR exhaustion in cloud environments
How to fix "ContainerCreating"
Get detailed information about what's blocking container creation:
kubectl describe pod <pod-name>Look at the Events section for messages like:
- "pulling image" - Image download in progress or stuck
- "FailedMount" - Volume mount issue
- "FailedCreatePodSandBox" - Network/CNI problem
- "configmap not found" - Missing ConfigMap
Events appear in chronological order; recent events show current blockers.
If events show image pull problems:
# Check if image exists and is accessible
docker pull <image>:<tag>
# Verify image pull secrets exist
kubectl get secrets | grep -i registry
kubectl get pod <pod-name> -o yaml | grep imagePullSecretsFor large images, pulling can take several minutes. Check the node's container runtime:
# On the node
crictl images
crictl pull <image>Volume issues are common causes of stuck ContainerCreating:
# Check PVC status
kubectl get pvc
# If PVC is Pending, check why
kubectl describe pvc <pvc-name>
# Check PV availability
kubectl get pvCommon fixes:
- Create a PersistentVolume matching the PVC
- Install the required CSI driver
- Fix storage class configuration
If events show sandbox or network errors:
# Check CNI plugin status
kubectl get pods -n kube-system | grep -E "calico|flannel|weave|cilium"
# Check node network
kubectl describe node <node-name> | grep -A 10 ConditionsOn the node:
# Check CNI configuration
ls /etc/cni/net.d/
cat /etc/cni/net.d/*.conf
# Restart CNI pods if needed
kubectl rollout restart daemonset <cni-daemonset> -n kube-systemMissing configuration resources block container creation:
# List ConfigMaps and Secrets in namespace
kubectl get configmaps
kubectl get secrets
# Check what the pod expects
kubectl get pod <pod-name> -o yaml | grep -A 5 configMapRef
kubectl get pod <pod-name> -o yaml | grep -A 5 secretRefCreate missing resources before the pod can start.
Node-level issues can block all pods:
# Check node conditions
kubectl describe node <node-name>
# Check disk space on node
ssh <node-ip> df -h
# Check container runtime
ssh <node-ip> systemctl status containerd
ssh <node-ip> journalctl -u containerd -n 50If the container runtime is unhealthy, restart it:
sudo systemctl restart containerdAdvanced notes
On AWS EKS, ContainerCreating often indicates IP address exhaustion. Each pod requires an IP from the VPC subnet. Check available IPs:
aws ec2 describe-subnets --subnet-ids <subnet-id> --query 'Subnets[].AvailableIpAddressCount'Solutions include using smaller instance types (fewer IPs per node), enabling prefix delegation, or adding subnets.
For GKE and AKS, similar IP exhaustion can occur with VPC-native clusters. Consider expanding the pod CIDR range.
Image pull timeouts on large images (>1GB) may require adjusting kubelet's image-pull-progress-deadline. For air-gapped environments, pre-pull images to nodes or use a local registry mirror.
Frequently asked questions
- What does "ContainerCreating" mean?
- A pod stuck in ContainerCreating status means Kubernetes is trying to set up the container environment but cannot complete the process. This phase includes pulling images, mounting volumes, and configuring the container network. Unlike CrashLoopBackOff (where containers start then fail), ContainerCreating indicates the container hasn't started at all.
- How do I fix "ContainerCreating"?
- Pods stuck in ContainerCreating cannot start containers due to image pull issues, volume mount failures, or CNI network problems. Check events for the specific cause.
- What causes "ContainerCreating"?
- Container image pull taking too long or failing PersistentVolumeClaim not bound to a PersistentVolume Volume mount timeout or failure (NFS, cloud storage)
- Is the "ContainerCreating" error serious?
- Yes. This is a high-severity error that usually blocks work until it is fixed, but the steps above resolve it.
Official resources & further reading
- ๐Kubernetes Official Documentation
- ๐Kubernetes Docs: debug pods(Official Docs)
- ๐ฌ
- ๐