Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions demos/query.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,14 +110,16 @@ aicr query --service gke --accelerator h100 --intent training --os cos \
value: '>= 1.32'
```

L40S (on OKE) relaxes K8s further (older accelerators run on older clusters):
L40S (on OKE) resolves a different component set; its K8s floor now matches the
catalog-wide minimum (every recipe carries the DRA driver, whose chart requires
1.32):

```shell
aicr query --service oke --accelerator l40s --intent training --os ol \
--selector constraints
```

> K8s minimum drops from `1.32.4` to `1.30`.
> K8s minimum relaxes from `1.32.4` to `1.32`.

### Component set differs by intent

Expand Down
4 changes: 2 additions & 2 deletions docs/user/cli-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -996,7 +996,7 @@ aicr query --service eks --accelerator gb200 --intent training \
--selector components.nodewright-customizations.values

# Watch constraints tighten as you add specificity
# Just "EKS" → 1 constraint (K8s >= 1.28)
# Just "EKS" → 1 constraint (K8s >= 1.32)
aicr query --service eks --selector constraints
# Add GPU + intent + OS → 4 constraints (K8s >= 1.32.4, Ubuntu 24.04, kernel >= 6.8)
aicr query --service eks --accelerator h100 --intent training --os ubuntu \
Expand Down Expand Up @@ -1121,7 +1121,7 @@ Supported operators:

| Operator | Example | Description |
|----------|---------|-------------|
| `>=` | `>= 1.30` | Greater than or equal (version comparison) |
| `>=` | `>= 1.32` | Greater than or equal (version comparison) |
| `<=` | `<= 1.33` | Less than or equal (version comparison) |
| `>` | `> 1.30` | Greater than (version comparison) |
| `<` | `< 2.0` | Less than (version comparison) |
Expand Down
2 changes: 1 addition & 1 deletion docs/user/component-catalog.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ Not every component appears in every recipe. The recipe engine selects component

Production GPU leaf recipes (H100, GB200, RTX Pro 6000 on EKS / AKS / GKE / OKE / LKE) enable the NFD Topology Updater. It publishes per-node `NodeResourceTopology` CRDs that describe NUMA zones, GPU-to-NUMA affinity, and NIC-to-NUMA affinity. Runtime consumers (NUMA-aware schedulers, debugging via `kubectl get noderesourcetopologies`) can read these CRDs without further configuration.

The Topology Updater requires the kubelet `podResources` gRPC socket. The `KubeletPodResources` feature gate has been on by default since Kubernetes 1.15 (Beta) and reached GA in Kubernetes 1.28; AICR's recipe constraints on the affected leaves require K8s ≥ 1.30 or higher, so this is satisfied in practice. Recipes targeting Kubernetes `< 1.15` must enable the feature gate explicitly. Kind / KWOK simulated clusters do not run a real kubelet and therefore leave the Topology Updater disabled — kind-based recipes will not see `NodeResourceTopology` CRDs.
The Topology Updater requires the kubelet `podResources` gRPC socket. The `KubeletPodResources` feature gate has been on by default since Kubernetes 1.15 (Beta) and reached GA in Kubernetes 1.28; AICR's recipe constraints require K8s ≥ 1.32, so this is satisfied in practice. Recipes targeting Kubernetes `< 1.15` must enable the feature gate explicitly. Kind / KWOK simulated clusters do not run a real kubelet and therefore leave the Topology Updater disabled — kind-based recipes will not see `NodeResourceTopology` CRDs.

See the upstream [Topology Updater docs](https://kubernetes-sigs.github.io/node-feature-discovery/stable/usage/nfd-topology-updater.html) for runtime consumer examples.

Expand Down
32 changes: 16 additions & 16 deletions pkg/bundler/testdata/stock_render_golden.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,27 @@
# One entry per leaf overlay: a digest over its fully rendered helm-deployer
# bundle tree (sorted relative paths paired with per-file content hashes).
a100-aks-ubuntu-training-kubeflow: 265940a7ef6f82bfe9752e5e488b416d5d54aa0245b29f0262796978547af68d
a100-any: 457dd24ba4f8b9d44af7f68ddc1f4e9d46d0e6eac30b0eceb2e979e1e9c2d2db
a100-eks-ubuntu-training-kubeflow: 9a77e69e7ea639be6100c4c2c0cb49bf87059348020c98f5c561158a22d452e7
a100-gke-cos-training-kubeflow: 0fb904af67e4ad85cb1b71efed94c8cd3966fc36f14cc80d9b50d5ffe7babde5
a100-oke-ubuntu-training-kubeflow: 92c1a420bccca84c7ca7e74d8960af6c3662bce4c708c45ccaa386f209dc1c9e
b200-any: b8e028ff78b7f142c3e157143a258510c4f44579e31f13c183796767de53d862
a100-any: 9e6f720c91e3d1f15e0fb930f8aed364a657a874340823868e056676d635bb78
a100-eks-ubuntu-training-kubeflow: 180f190dd61f516c11a0161e402d49a5582ebfb8d21249932d5314ee9c27b58a
a100-gke-cos-training-kubeflow: 05929baa06d96fb5a0667bf3bfddc79c2b39bba9c54974214c269ecd403be07f
a100-oke-ubuntu-training-kubeflow: 94ca5d0debe6285457fed3be501cd1791a160dbde3f9976b77aef78ae728687b
b200-any: e9db5b5573fee7df43427a04fd3ac059c14e2cc9a565b0a11f1ebcca7b642981
b200-gke-cos-inference-dynamo: cd3c475c9bb709b8164571be18ec625b38263a762d91d16f89049e75fc934eb4
b200-gke-cos-training-kubeflow: f35da200bec023578aaaeebe337775d9b62718cfd2ac0c568c4a56f69575fbb3
bcm-inference: 2a7d525459b585c3b1639eb556de8feb682b27f6bb8be3a7015de7773ba7c235
gb200-any: ff2c8128bc91fce4a48d650d160659b08272a346a044f7955d3b23109fde6e8d
gb200-any: 4e467ff5dda2a59082d13cfcfddf15b7763655fffab5128cbad959fb1c9c08ca
gb200-eks-ubuntu-inference-dynamo: 637a4fd32933c220453d3732363c9a56bd75dd91cdd886a9b0571b666670744d
gb200-eks-ubuntu-training-kubeflow: e4d2b1cc86cf33b7741e881a984f6943353bf2e1b85d918b8d3e82cf50c8fa60
gb200-eks-ubuntu-training-slurm: d356fec2562b9d3f8adcccb2344402f41270ca301f353affd6529aaa86e430d4
gb200-oke-ubuntu-inference-dynamo: 0304fffcd27d04827ae561b32ced55b9ff87e0f6049bda30a075afd49f24ad11
gb200-oke-ubuntu-training-kubeflow: 3ed8582775ca602b48eb88ff05d228db3f4189f4230f31f72cf355be8d5241b0
gb300-any: a67ce96e16a0a22d85f22c2803f029e49b1befb4226a60cdf9820fb6b6e77ea2
gb300-any: da939cd77c1e1331f4d98d8081225ac427407196389570670051bc5482fbc049
gb300-eks-ubuntu-inference-dynamo: c725636167448e64ef1d567613aded4bcd7ede0137a3d1e4b9c70be1ec20c61a
gb300-eks-ubuntu-training-kubeflow: e84019cb236bae67eef79a8166214295b066d1514ebb869619898925be48522d
h100-aks-ubuntu-inference-dynamo: 54061313326c300b83a0627f415002bd080c7c0e338e19bcce7996446a791065
h100-aks-ubuntu-training-kubeflow: ea0180c91126bdda49e3641538cfef03961358ebe4d883e893d53a82b26d4bd7
h100-aks-ubuntu-training-slurm: 7f9c80295d770456adca24b66bc7681e42fd9db54fcb97d2541c657c939645c9
h100-any: 7e98352317f4d2a753255ec776e7b7bc605ad288f3856b4a467a15f8844aa903
h100-any: 449a706634ce8ca3407bbc8a566f41db9b66bc8a3e35883f5052e3ba0ec9569e
h100-bcm-ubuntu-training: c73ab59f00b5425a0be7c8aaac6107469c8fb59e54eecce9cf4937704821611d
h100-eks-ubuntu-inference-dynamo: 6a3e47afa2018591b22f2fd96105d75ec23b631fafb4c0f30f42ba77af6f537a
h100-eks-ubuntu-inference-nim: 3b9b4fe53c967fa95e56e2cf6e631a55f044d50f76423e11ac176d839e005d2d
Expand All @@ -36,18 +36,18 @@ h100-gke-cos-training-slurm: 0efee10e13589930111b9f5064430d2dcac463d2d2cf6032a6a
h100-kind-inference-dynamo: 8cea3d208001c5d7bb542d83a75e2ab641722981b279db9391a300b8f9d1f20c
h100-kind-training-kubeflow: 1203d2e475a51a3e07d3a62a87ad2dca91c24eda3aea800aca86bf2dfee5a80a
h100-kind-training-slurm: 8a27b1ae4e91cda80c4a32d456552952f2ec0a28af10e9e0317219b551ddd133
h200-any: ceee05a6ed9dd0f218919a90187de851e16e93cf89293c9746d5f0e46bbda222
h200-any: 8eb6e4073c0acaeb9a6eaf3c26e82c6f0cfad17c1eb5dc2d906a4dfeebebcaf4
h200-eks-inference: 2900b7d96bc48a27eb5fedda75b99b010b9165bc6058372d2de3b991f64c4982
h200-eks-training: 4b3074954d10a81d057ac746c7bddf3664637dfd002cd0955348ec3dee11eb20
l40s-any: dabbb23da635f2b6db7803be55841a7305f884ce7798dbf79d952686004f09d8
l40s-oke-inference: 8a8884dcf64b9feaa708b152cc4eaf1b9c09d790de295cf2b0e5a5ca464154f1
l40s-oke-training: f9b741b390f9f29451c7ad16da56602bbf6497bec067be6b19242cffdf1e1de7
monitoring-hpa: 32917a470d982044c3d49960dbd5e62ab56cd870375bfac23c35d7a4b3f4298a
l40s-any: 18fa876e004f2507d2610047ac78f0265c7214336ff3538ed4bb78fda479a709
l40s-oke-inference: 367a7ba248841c1a4cae620dd446712007d869f007e1e1f61f6a1f799316f8d1
l40s-oke-training: 7430568438061aede469c5ca3779ecc34a78aaf27786e2626ca6264d49b18f6a
monitoring-hpa: b5377927b96805237ba93800bbf4c963dabcf2ed61948b7427e07f35df05832f
ocp-inference-nim: 016fc59c13e901de5556f09f3cb3d5a90f91b9826d34f126fde1e066b311605f
ocp-training: 652f7ccdf52009adafe993da111857aa67390678f382b4c0caf0aecd0d613635
rtx-pro-6000-any: 9115c5d61d9941130e448f29b9fbcd834f6d15a46fa4edf3239afc44fcdd36f0
rtx-pro-6000-any: 59bfd011fe436f7a8785df6227d35dea4bcceb5590650cd4063c9f4573389d98
rtx-pro-6000-eks-ubuntu-inference-dynamo: 8c35c21289dc4a56f3e035da9d35427c9a1f2402c643febda2c6b397692b2a49
rtx-pro-6000-eks-ubuntu-inference-nim: feb5f1d72ebd95459c9df0891420d20fac42c6b8c16f0e8fa551da61a19aef1d
rtx-pro-6000-eks-ubuntu-training-kubeflow: 1dfe905ac8d891fba4ce797de6532320024fe2616653e4703be5fc8e29716d77
rtx-pro-6000-lke-ubuntu-inference: c5d53e0adbe9c500ecd5eb45d2482e632f1c414657a08ebef053a8aab90fc3cb
rtx-pro-6000-lke-ubuntu-training: 39e9cc1636a11d2568d9d50ecf3744f5773c4870772727661c40be63bac33280
rtx-pro-6000-lke-ubuntu-inference: df7a09c3a1038beba8ba33b675c02e80c5cfa377eee5b89e550096c56d1ea6e0
rtx-pro-6000-lke-ubuntu-training: bd5efe51684a82b4532c5173b1d0a23169be7f0bf69ba105c6129604e8589952
2 changes: 1 addition & 1 deletion pkg/cli/touched_invariant_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ func TestRecipeCmd_Snapshot_StatedDimensionNotRelaxed(t *testing.T) {
}

// constraintFailingKindSnapshotYAML fingerprints to service=kind on a
// Kubernetes version below the kind overlay's `K8s.server.version >= 1.25`
// Kubernetes version below the kind overlay's `K8s.server.version >= 1.32`
// constraint, so the only overlay covering service=kind is excluded by
// constraint evaluation rather than absent from the catalog.
const constraintFailingKindSnapshotYAML = `kind: Snapshot
Expand Down
2 changes: 1 addition & 1 deletion pkg/client/v1/relax_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -486,7 +486,7 @@ func kindUbuntuSnapshot() *snapshotter.Snapshot {
}

// constraintFailingKindSnapshot fingerprints to service=kind on a Kubernetes
// version below the kind overlay's `K8s.server.version >= 1.25` constraint, so
// version below the kind overlay's `K8s.server.version >= 1.32` constraint, so
// constraint evaluation excludes the only overlay that covers service=kind.
func constraintFailingKindSnapshot() *snapshotter.Snapshot {
return &snapshotter.Snapshot{
Expand Down
2 changes: 1 addition & 1 deletion pkg/defaults/timeouts.go
Original file line number Diff line number Diff line change
Expand Up @@ -1257,7 +1257,7 @@ const (
//
// This is a render-safe floor, not a support floor. This constant must
// stay at or above the strictest kubeVersion any bundled chart declares.
// Do NOT lower it to match the ">= 1.25" recipe floor in
// Do NOT lower it to match the ">= 1.32" recipe floor in
// recipes/overlays/base.yaml: recipes are validated against their own
// constraints, while mirror discovery raises lower versions to this
// value solely for Helm rendering (see mirror.KubeVersionFromConstraints).
Expand Down
Loading
Loading