Skip to content

feat(arc): let a profile name tolerations, and count the nodes they let its pods use - #85

Merged
Mearman merged 1 commit into
mainfrom
feat/profile-tolerations
Oct 14, 2026
Merged

Mearman merged 1 commit into
mainfrom
feat/profile-tolerations

Conversation

@Mearman

@Mearman Mearman commented Oct 14, 2026

Copy link
Copy Markdown
Member

A node can carry a taint that keeps other workloads off it while the runner pods are meant to run there, for example machines the controller and listener must not be scheduled on. Measured sizing takes runner pods to tolerate nothing (arc.py, _REPELLING_TAINT_EFFECTS), so it leaves such a node out of maxRunners even when the pods tolerate its taint. Seen on a pool where two on-prem nodes carry a NoSchedule taint: the measured ceiling dropped from 11 to 2 the moment the taint was applied, although the runner pods tolerated it.

A profile now takes tolerations, validated like burst.tolerations (the validation is shared), put on the runner pods ahead of burst's, and passed to the eligibility check. A node whose only repelling taints they match counts toward the ceiling, and a taint they do not match still excludes it. Condition taints that Kubernetes adds keep their existing handling.

Unit tests cover the match rules, the tolerated and untolerated node case, placement with and without burst, and the validation messages. The role's measure_sizing.yml passes the profile's tolerations through. The whole unit suite and ansible-lint --profile production pass.

…et its pods use

A node can carry a taint that keeps other workloads off it while the profile's runner
pods are meant to run there. Measured sizing took runner pods to tolerate nothing, so
it left such a node out of maxRunners even though the pods could be placed on it. The
profile now takes tolerations, validated like burst's, placed on the runner pods ahead
of burst's, and used by the eligibility check: a node whose only repelling taints they
match counts, and a taint they do not match still excludes it.
@chatgpt-codex-connector

Copy link
Copy Markdown

This security review couldn’t start because the paying account has exhausted its Codex allowance and has insufficient available credits. The payer can check their balance and add credits in the Codex usage dashboard, then try again. If you do not manage the paying account, contact this repository's admins.

@Mearman
Mearman merged commit 1bacb38 into main Oct 14, 2026
34 checks passed
@Mearman
Mearman deleted the feat/profile-tolerations branch October 14, 2026 15:27
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 1.27.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant