Repository navigation
Size workload containers from the flavor - #88
Merged
Merged
Conversation
The catalog declared flavors, this runner reported them, and the platform resolved and billed by them -- while every container was created with no resources at all, so pods came out BestEffort whatever the flavor said. A flavor now carries two budgets: resources for the workload's main container and sidecarResources for each of its sidecars, so a workload asks for a size rather than a per-container budget. The name arrives on StartWorkloadRequest and resolves against this runner's own catalog; an unknown name fails the start rather than silently landing unsized, and a workload naming none is left as it was. Init containers stay unsized on purpose. Kubernetes takes a pod's request as max(sum of containers, max of init containers), so sizing them would make a workload reserve its flavor plus its bootstrap. The shipped flavors request a typical footprint and limit the ceiling rather than requesting the ceiling itself. Reserving it stranded most of a node -- five workloads held 11.3Gi of 15.5Gi on a 16Gi node, and everything after them stopped scheduling.
This was referenced Sep 17, 2026
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.
The catalog declared flavors, this runner reported them, and the platform
resolved and billed by them -- while every container was created with no
resources at all, so pods came out BestEffort whatever the flavor said.
A flavor now carries two budgets: resources for the workload's main
container and sidecarResources for each of its sidecars, so a workload
asks for a size rather than a per-container budget. The name arrives on
StartWorkloadRequest and resolves against this runner's own catalog; an
unknown name fails the start rather than silently landing unsized, and a
workload naming none is left as it was.
Init containers stay unsized on purpose. Kubernetes takes a pod's request
as max(sum of containers, max of init containers), so sizing them would
make a workload reserve its flavor plus its bootstrap.
The shipped flavors request a typical footprint and limit the ceiling
rather than requesting the ceiling itself. Reserving it stranded most of
a node -- five workloads held 11.3Gi of 15.5Gi on a 16Gi node, and
everything after them stopped scheduling.
Depends on agynio/api#198 — CI cannot build until that proto field is on the BSR.
Verified on the local bundle VM: workload pods went from
BestEffortto correctly sized, and thesvc_k8s_runnere2e suite is 8/8.