Skip to content
Latchkey

Kubernetes "FailedScheduling: 0/N nodes available (taints)" in CI

Node taints repel pods that do not tolerate them. When every candidate node is tainted (dedicated pools, control-plane, GPU nodes) and the pod has no matching toleration, scheduling fails with an untolerated-taint message.

What this error means

kubectl describe pod Events show 0/N nodes are available: N node(s) had untolerated taint {key: value}. The pod stays Pending.

kubectl
Warning  FailedScheduling  default-scheduler  0/3 nodes are available:
3 node(s) had untolerated taint {dedicated: gpu}.

Common causes

Pod lacks the required toleration

The target nodes are tainted (e.g. dedicated=gpu:NoSchedule) and the pod spec has no matching toleration.

Wrong node pool targeting

A nodeSelector/affinity points the pod at a tainted pool it is not meant for, or general nodes were all tainted.

How to fix it

Read the taints and add a toleration

Match the taint key/value/effect exactly.

Terminal
kubectl describe nodes | grep -i taint
# add to pod spec:
# tolerations:
# - key: "dedicated"
#   operator: "Equal"
#   value: "gpu"
#   effect: "NoSchedule"

Or target untainted nodes

  1. If the pod should not run on the tainted pool, fix its nodeSelector/affinity to land on general nodes.
  2. If the taint is unintended, remove it with kubectl taint nodes <node> key-.
  3. Re-apply and confirm scheduling.

How to prevent it

  • Keep tolerations in sync with the node-pool taint scheme.
  • Document which workloads belong on which tainted pools.
  • Avoid blanket-tainting nodes general workloads need.

Frequently asked questions

What causes ""node(s) had untolerated taint""?
The target nodes are tainted (e.g. dedicated=gpu:NoSchedule) and the pod spec has no matching toleration.
How do I fix "node(s) had untolerated taint"?
Match the taint key/value/effect exactly.

Related guides

References

Latchkey auto-heals failures like this one - detected, fixed, and retried without you. Start free → 30-day trial · No credit card