How to fix timed out waiting for the condition (kubeadm init) in Kubernetes
During kubeadm init, the control plane failed to initialize within the timeout period, usually because critical system Pods are not starting.
Quick fix
Fixes timed out waiting for the condition (kubeadm init)
sudo systemctl status docker # or containerd
sudo docker ps # Test connectivity- Check container runtime is healthy
- Verify disk and memory availability
- Increase kubeadm init timeout
- Pre-pull Kubernetes images
sudo systemctl status docker # or containerdsudo docker ps # Test connectivitytimed out waiting for the condition (kubeadm init)
What this error means
Kubeadm init creates core Kubernetes system components (API server, scheduler, controller-manager) and waits for them to become healthy. If these Pods don't start within a few minutes (default timeout), kubeadm exits with a timeout error. This indicates issues with container runtime, images, or node resources.
Typical symptoms
- kubeadm init hangs for 5+ minutes then fails
- Timeout error mentioning waiting for condition
- Some system Pods stuck in Pending state
- Control plane partially initialized but not usable
- Container images unable to pull
- Node resources exhausted (CPU, memory, disk)
Common causes
- Container runtime not responding or too slow
- Container images cannot be pulled (network issue)
- Node running out of disk space or memory
- Insufficient CPU resources
- DNS resolution failing for image registries
- Firewall blocking container image downloads
How to fix "timed out waiting for the condition (kubeadm init)"
Before kubeadm init, verify runtime:
sudo systemctl status docker # or containerd
sudo docker ps # Test connectivityIf not running, start it:
sudo systemctl start dockerCheck node resources:
df -h # Check disk space, need at least 10GB free
free -m # Check memory, need at least 2GBIf low, clean up before retrying kubeadm init.
Use the --timeout flag:
kubeadm init --timeout 5mDefault is often 4-5 minutes. Increase for slow networks.
Download images before init to speed up:
kubeadm config images pull
# Then run init
kubeadm initReview kubelet logs:
sudo journalctl -u kubelet -n 100 --no-pager
# Or check control plane pod logs
kubectl logs -n kube-system kube-apiserver-NODE_NAMEAdvanced notes
For air-gapped environments, pre-load container images. Use containerd with image caching for faster startup. Monitor system resources during init with: watch -n 1 "free -m && df -h". For development/testing, consider increasing --apiserver-advertise-address explicitly. Check network connectivity to image registries using: curl -I https://registry.k8s.io
Frequently asked questions
- What does "timed out waiting for the condition (kubeadm init)" mean?
- Kubeadm init creates core Kubernetes system components (API server, scheduler, controller-manager) and waits for them to become healthy. If these Pods don't start within a few minutes (default timeout), kubeadm exits with a timeout error. This indicates issues with container runtime, images, or node resources.
- How do I fix "timed out waiting for the condition (kubeadm init)"?
- During kubeadm init, the control plane failed to initialize within the timeout period, usually because critical system Pods are not starting.
- What causes "timed out waiting for the condition (kubeadm init)"?
- Container runtime not responding or too slow Container images cannot be pulled (network issue) Node running out of disk space or memory
- Is the "timed out waiting for the condition (kubeadm init)" 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: Creating a cluster with kubeadm(Official Docs)
- ๐Kubernetes: Kubeadm Troubleshooting(Official Docs)