scale up forgejo CI #560
Labels
No labels
burndown-2026-06
burndown-2026-08
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/advocate
role/director
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/science
role/sysadmin
state
ambient
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/infrastructure#560
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
pending an analysis of whats going on with disk pressure
and a memory usage audit
I want forgejo CI to have 6 standard runners, 2 deployers, and 2 tap writers
Current live read says do not scale up the kai-server build runners yet.
Snapshot from 2026-07-15 00:10 PDT:
/is 480G total, 365G used, 91G available, 81%.DiskPressure=False.FreeDiskSpaceFailedafter the runner rollout. Last observed event was about 19m old at the time of the check.The scale-up blocker is the margin, not current health. The node only has about 16Gi of buffer above kubelet’s likely 85% image-GC high watermark, and one runner was just evicted because
docker-libexceeded the new 12Gi emptyDir limit:Usage of EmptyDir volume "docker-lib" exceeds the limit "12Gi".A fifth kai-server build runner would add roughly another 13Gi of worst-case ephemeral limit. That leaves almost no margin, while the current four runners can already push the node back toward pressure if several builds fill DinD at once.
Recommended path for this issue: do not increase kai-server replicas until one of these lands first:
The 12Gi cap is doing the right protective thing now. Scaling before reducing scratch usage or adding disk would trade queue time for cancelled/evicted jobs and another node-pressure loop.
Incident update, 2026-07-22 PDT: kai-server entered DiskPressure and evicted the Forgejo application pod plus three general runners. The forgejo Service had zero endpoints and returned 503. Kubelet reported repeated NodeHasDiskPressure transitions over 9 days and FreeDiskSpaceFailed over 11 days; image GC attempted to free about 24 GB but found only about 462 MB eligible. Evictions raised rootfs free space to 75 GB on the 480 GB filesystem. After kubelet pressure-transition grace elapsed, DiskPressure cleared, the taint was removed, Forgejo rescheduled, endpoint 10.42.0.169:3000 became ready, and the API recovered. This reinforces the existing recommendation: do not scale kai-server runners up until runner scratch is isolated, pruned reliably, or moved off-node.
Additional root cause: the daily forgejo-runner-recycle CronJob has failed every observed run. Its image is rancher/kubectl:v1.31.4, but the pod command is /bin/sh -c; that image contains no /bin/sh, so each job terminates StartError before restarting either runner StatefulSet. Four failed recycle pods remain from the last two schedules. After todays eviction, the general runners recovered and free rootfs fell from 75 GiB to 62 GiB immediately, confirming runner scratch rapidly consumes the recovered margin. The recycle job needs an image/command pairing that actually starts, plus verification that its restart behavior clears the intended scratch stores.