Skip to content
Latchkey

ARC "AutoscalingRunnerSet" creates no runners in CI

An AutoscalingRunnerSet exists but never scales up: no ephemeral runner pods spawn when jobs queue. The listener is not receiving assignments, the runs-on label does not match, or maxRunners caps at zero.

What this error means

kubectl shows the AutoscalingRunnerSet and its listener but zero runner pods, while a workflow sits "Waiting for a runner". Nothing in the runner namespace changes.

Terminal
$ kubectl get autoscalingrunnerset -n arc-runners
NAME             MINIMUM   MAXIMUM   CURRENT   PENDING   RUNNING
arc-runner-set   0         10        0         0         0

Common causes

The listener is not running

Without a healthy listener pod in the controller namespace, no job assignments arrive, so the set never scales past the minimum.

runs-on does not match the scale set name

Jobs target a label that is not the scale set name, so GitHub never routes them to this set and CURRENT stays at zero.

How to fix it

Confirm the listener is up and the label matches

  1. Check the listener pod in the controller namespace is Running.
  2. Confirm the workflow runs-on value equals the scale set (installation) name.
  3. Confirm maxRunners is greater than zero in the values.
Terminal
kubectl get pods -n arc-systems | grep listener
kubectl get autoscalingrunnerset -n arc-runners -o wide

Fix the runs-on label in the workflow

Set runs-on to the exact scale set name so GitHub dispatches jobs to this set.

.github/workflows/ci.yml
jobs:
  build:
    runs-on: arc-runner-set

How to prevent it

  • Keep the scale set name and runs-on label identical.
  • Monitor the listener pod so a crash is caught immediately.
  • Set maxRunners above zero for every active scale set.

Related guides

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →