Repository navigation
feat(arc): let a profile name tolerations, and count the nodes they let its pods use - #85
Merged
Merged
Conversation
…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.
|
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. |
|
🎉 This PR is included in version 1.27.0 🎉 The release is available on:
Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 aNoScheduletaint: 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 likeburst.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.ymlpasses the profile's tolerations through. The whole unit suite andansible-lint --profile productionpass.