ARC runner pod stuck "Pending" (Unschedulable) in CI
ARC created a runner pod but the scheduler cannot place it on any node. The pod sits in Pending, jobs wait, and the Events explain why: no node has enough resources or matches the selector.
What this error means
kubectl shows the runner pod in Pending with a FailedScheduling event citing Insufficient cpu, Insufficient memory, or an unmatched node selector or taint.
0/4 nodes are available: 1 Insufficient cpu, 3 node(s) didn't match
Pod's node affinity/selector. preemption: 0/4 nodes are available.Common causes
No node has enough CPU or memory
The runner pod requests more resources than any node can spare, so the scheduler leaves it Pending until capacity frees or a node is added.
Node selector or taints exclude every node
A nodeSelector, affinity, or missing toleration in the runner spec matches no available node.
How to fix it
Inspect the scheduling event and adjust
- Describe the Pending runner pod and read the FailedScheduling event.
- Lower the resource requests, or add capacity to the node pool.
- Correct the nodeSelector or add the toleration the nodes require.
kubectl describe pod -n arc-runners <runner-pod> | \
sed -n '/Events/,$p'Set right-sized requests in the runner template
Tune the container resources in the scale set values so pods fit the node pool.
template:
spec:
containers:
- name: runner
resources:
requests:
cpu: "500m"
memory: "1Gi"How to prevent it
- Right-size runner requests to the node pool capacity.
- Keep node selectors and tolerations aligned with real node labels.
- Enable cluster autoscaling for bursty CI workloads.