Repository navigation
Conversation
👷 Deploy request for interlink-dev pending review.Visit the deploys page to approve it
|
This was referenced Oct 30, 2026
A caller that holds every pod of a group (a Kueue Workload's members) sends them in one POST /createPodSets, by PodSet, so that a plugin can submit the whole group as one job at once instead of buffering /create calls until the last member arrives. - New types PodSetsCreateRequests and PodSetCreateRequests (caller to interLink) and RetrievedPodSetsData and RetrievedPodSetData (interLink to plugin). Each pod is a whole PodCreateRequests: projected and downward API files differ from pod to pod. The order of the pods, PodSet after PodSet, gives their ranks; rank 0 is the head. - CreatePodSetsHandler prepares every pod as CreateHandler does (getData, then JobScriptBuilderURL or JobScriptTemplate), forwards the group to the plugin's /createPodSets and relays its answer: one CreateStruct per pod in request order, or the plugin's error code. A failing job script answers the caller once for the whole group. - The template step moves to renderJobScript, shared with CreateHandler, whose behaviour is unchanged. - The operation is in both OpenAPI specs and in the plugin guide. It is optional: a plugin that implements it lists "podset-create" in the capabilities of its ping answer; status, logs and delete stay per pod. - The caller's access token goes to the plugin as on the other sidecar calls (ForwardAccessToken), and never to a job script builder. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Matteo Bunino <48362942+matbun@users.noreply.github.com>
/createPodSets becomes /createPodGroup and takes a flat list of pods in rank order instead of named PodSets. PodGroup is what Kubernetes calls a set of pods scheduled together (scheduling.k8s.io Workload and PodGroup, KEP-4671), while PodSet is Kueue's own term. No plugin needs the inner names, and each pod still carries its own labels. - PodGroupCreateRequests and RetrievedPodGroupData replace the four PodSet types; plugins list the capability "pod-group-create". - Handler, route, OpenAPI specs, plugin guide and tests follow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Matteo Bunino <48362942+matbun@users.noreply.github.com>
The group call now starts its span with startAPITrace, records the caller's X-Forwarded headers only with Tracing.Detailed, marks the span as failed on every error path and as ok once the sidecar takes the group, and passes the request context to getData, the job script builder and the sidecar. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Matteo Bunino <48362942+matbun@users.noreply.github.com>
matbun
force-pushed
the
feat/create-podsets
branch
from
November 10, 2026 14:41
f438401 to
9d9606f
Compare
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
A caller that holds every pod of a group, such as the members of a Kueue Workload, can send them in one
POST /createPodGroup, so that a plugin submits the group as one job at once instead of buffering/createcalls until the last member arrives. The name follows Kubernetes' own PodGroup (scheduling.k8s.io, KEP-4671), the set of pods scheduled together.interLink prepares each pod as for
/create(getData, thenJobScriptBuilderURLorJobScriptTemplate) and forwards the group to the plugin's/createPodGroup. Each pod keeps its own data, because projected and downward API files differ from pod to pod; the order of the pods gives their ranks. The plugin answers oneCreateStructper pod, and status, logs and delete stay per pod. The route is optional: a plugin that implements it listspod-group-createin its ping answer, and the virtual kubelet path does not change. The caller's access token reaches the plugin as on the other sidecar calls, never a job script builder.Tested with unit tests and end to end with the Slurm plugin: five gangs (PyTorch, MPI, TrainJob, Ray, a plain pod group) made one group call each, no
/create, and one 2-node Slurm job each.Related issue : #599
Plugin side: interlink-hq/interlink-slurm-plugin#174