Repository navigation
Add optional Run:ai to the Kubernetes path: KAI Scheduler and platform modes - #1425
Merged
Merged
Conversation
Off by default (runai_mode: off). Modes: kai, platform (experimental). Adds playbooks/k8s-cluster/runai.yml, roles/runai, validate_runai.py, docs/k8s-cluster/runai.md, and the deploy-runai-kai skill.
…platform mode --create-project creates a project through the Run:ai API, runs the whole-GPU and half-GPU checks in its namespace with runai-scheduler, and deletes it. ok requires both create and delete.
…lashed with the key)
…use it, not CoreDNS, for outside names)
…es in a block scalar); lab domain now added
…e scheduler and cluster link to come up after an install
…the cluster state field, and reports a safe cluster status summary
…fixed status words only
…ensitive Connected, wider fixed word list
…eys and length-bucketed text markers; accepts nested Connected
…t hash so it can be matched offline; ignores spaces/case/underscores in fixed words
…rger reviewed finite word list; docs corrected
…gpu_fractioning is set (the cluster chart enables it by default and it needs GPU Operator >= 26.7.1 + r615)
…stays Pending (no event text)
… document the half-GPU limit
ensure_namespace now refuses a namespace that already exists, labels the one it creates, and delete_namespace only removes namespaces this run created.
…plicit Platform --create-project refuses a pre-existing runai-<name> namespace and only deletes the namespace after this run created the project.
… skip-fractions gating, debug message)
… create returns the UID; replacement/race regressions
…oject namespace adopted only when Run:ai-labelled
…equire label+creation-time link before GPU jobs
… project to it (requestedNamespace), delete by UID
michael-balint
approved these changes
Oct 19, 2026
michael-balint
left a comment
Contributor
There was a problem hiding this comment.
Would be good to also add test for LoadBalancer & Gateway API, especially using new implementation since this is where the community is today: https://docs.nvidia.com/run-ai/self-hosted/v3.0/documentation/installation-and-configuration/config/networking/kubernetes-gateway-api.
Contributor
Author
|
Re: review @michael-balint thanks for the review. Agreed: tracking LoadBalancer and Kubernetes Gateway API coverage in #1426. The plan is to add both exposure options to the Run:ai role, extend the validator so it passes in platform mode with each one, and update the docs to cover both (dropping the "LoadBalancer is untested" note). We're aiming for the 26.11 release and will link the follow-up PR on #1426. |
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.
Add optional Run:ai to the Kubernetes path: KAI Scheduler mode and platform mode
What this adds
playbooks/k8s-cluster/runai.ymland arunairole. Off by default; nothing changes unless you run the playbook.scripts/validation/validate_runai.py: checks either mode. It waits for the scheduler and cluster link, prints only a fixed-vocabulary status summary, creates a throw-away project through the Run:ai API bound to a namespace it creates itself, runs a whole-GPU job, then deletes the project and only that namespace (by UID, never an existing namespace).docs/k8s-cluster/runai.md), adeploy-runai-kaiagent skill, example group_vars, and unit tests (scripts/validation/tests/test_runai.py,tests/runai/).Testing
ansible-playbook --syntax-check playbooks/k8s-cluster/runai.ymlpasses; Python compile and YAML parse of all role and playbook files pass;git diff --checkclean.ok: true. Cluster showed Connected, scheduler ready, the test project was created through the Run:ai API and bound to the validator's namespace, a whole-GPU job ran, the project was deleted and that namespace removed, uninstall was clean, and the machine was released with nothing left behind.Known gaps (stated plainly)
--skip-fractions). Fractioning is off by default in platform mode; it needs a newer GPU Operator than we tested.Notes for reviewers