Repository navigation
docs: capacity-aware Kueue admission design with demo (#278) - #485
Open
haozzz (haozzzdev) wants to merge 1 commit into
Open
haozzz (haozzzdev) wants to merge 1 commit into
haozzz (haozzzdev) wants to merge 1 commit into
Conversation
Author
|
@microsoft-github-policy-service agree |
| if err := r.markTerminal(ctx, owner, "ProvisioningDeadlineExceeded", lastPRMessage(ctx, wl)); err != nil { | ||
| return ctrl.Result{}, err // conflict → requeue and re-evaluate | ||
| } | ||
| return ctrl.Result{}, r.deactivate(ctx, wl) // MergeFromWithOptimisticLock |
There was a problem hiding this comment.
Kueue can admit the Workload after markTerminal succeeds but before deactivate. The Workload patch then conflicts, but the owner keeps its terminal annotations; the next reconcile takes admitted(wl) and calls maybeTTLCleanup. Under the proposed status and TTL rules, a running job is reported failed and can later be deleted. Please commit the admission-versus-timeout decision on one object, then mirror only a committed timeout to the owner and arm cleanup, with recovery for an interrupted mirror.
This branch has not been deployed
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.
Summary
System design for #278: capacity-aware Kueue admission with Cluster Autoscaler, plus a runnable laptop demo of the success path.
docs/design/capacity-provisioning-admission.md: the design. It gates admission on capacity with Kueue's ProvisioningRequest AdmissionCheck (best-effort-atomic-scale-up). It bounds every wait in three layers: submit-time preflight, CAValidUntilSecondsplus KueueretryStrategy, and a TauGrid admission deadline that setsWorkload.spec.active=false. It sets up the Kueue objects once per cluster through TauCluster External / Adopt / Manage modes, leaves the researcher workflow unchanged, and handles topology with a workload label that CA resolves from its own in-memory domain map (§10).docs/design/images/capacity-provisioning-admission.{png,svg}: the component diagram, with every addition in red.docs/design/examples/capacity-provisioning-demo/: real Kueue v0.19.2 and the real ProvisioningRequest CRD on kind, with a small fake autoscaler and KWOK nodes. A 2 × 8 GPU Job stays suspended until both nodes exist, then both pods start together, and the pool scales back to 0.Documentation and demo only. No change to TauGrid controllers, CLI, CRDs or charts.
Related issue
Closes #278
Validation
Ran the demo on kind (Docker, kind v0.29.0, Go 1.22.2):
The full captured run is in
docs/design/examples/capacity-provisioning-demo/sample-output.txt.Compatibility and operational impact
None. Docs and a self-contained example with its own Go module.
Checklist