ARC runner container "OOMKilled" in CI
The runner or dind container was terminated with OOMKilled: the job used more memory than the pod limit allowed, so the kernel killed it. The job usually ends with exit code 137.
What this error means
kubectl describe on the runner pod shows Last State Terminated with Reason OOMKilled, and the workflow step fails abruptly, often at a memory-heavy build or test.
Terminal
Last State: Terminated
Reason: OOMKilled
Exit Code: 137Common causes
Memory limit lower than the job needs
The runner or dind container memory limit is below the peak the build or tests require, so the kernel OOM-kills it.
A memory-heavy step inside dind
Docker builds or large test suites in the dind container can spike memory past the sidecar limit.
How to fix it
Raise the memory limit in the runner template
- Confirm OOMKilled from kubectl describe on the pod.
- Raise the memory request and limit on the runner (and dind) container.
- Reinstall the scale set and re-run the job.
values.yaml
template:
spec:
containers:
- name: runner
resources:
requests: { memory: "2Gi" }
limits: { memory: "4Gi" }Reduce the job memory footprint
Lower build parallelism or split memory-heavy steps so the job fits under the limit.
How to prevent it
- Size runner and dind memory limits to the heaviest expected job.
- Monitor pod memory to spot jobs approaching the limit.
- Split or bound memory-heavy steps in the workflow.
Related guides
ARC runner pod stuck "Pending" (Unschedulable) in CIFix an ARC runner pod stuck in Pending in CI - the scheduler cannot place it because of insufficient CPU or m…
ARC "Cannot connect to the Docker daemon" in CIFix ARC "Cannot connect to the Docker daemon at unix:///var/run/docker.sock" in CI - the dind sidecar is not…
ARC "EphemeralRunner failed too many times" in CIFix ARC "EphemeralRunner has failed more than 5 times" in CI - the controller gave up recreating a runner tha…