How to fix timed out waiting for the condition (kubeadm init) in Kubernetes

KubernetesINTERMEDIATEHIGHUpdated Dec 6, 2025ยท 221 views

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
  1. Check container runtime is healthy
  2. Verify disk and memory availability
  3. Increase kubeadm init timeout
  4. Pre-pull Kubernetes images
kubernetes โ€” error
sudo systemctl status docker # or containerd
sudo docker ps # Test connectivity
timed 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

  1. Container runtime not responding or too slow
  2. Container images cannot be pulled (network issue)
  3. Node running out of disk space or memory
  4. Insufficient CPU resources
  5. DNS resolution failing for image registries
  6. Firewall blocking container image downloads

How to fix "timed out waiting for the condition (kubeadm init)"

1Check container runtime is healthy

Before kubeadm init, verify runtime:

bash
sudo systemctl status docker  # or containerd
sudo docker ps  # Test connectivity

If not running, start it:

bash
sudo systemctl start docker
2Verify disk and memory availability

Check node resources:

bash
df -h  # Check disk space, need at least 10GB free
free -m  # Check memory, need at least 2GB

If low, clean up before retrying kubeadm init.

3Increase kubeadm init timeout

Use the --timeout flag:

bash
kubeadm init --timeout 5m

Default is often 4-5 minutes. Increase for slow networks.

4Pre-pull Kubernetes images

Download images before init to speed up:

bash
kubeadm config images pull

# Then run init
kubeadm init
5Check logs if init still fails

Review kubelet logs:

bash
sudo journalctl -u kubelet -n 100 --no-pager

# Or check control plane pod logs
kubectl logs -n kube-system kube-apiserver-NODE_NAME

Advanced 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