Skip to content
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 @@ -1016,7 +1016,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 @@ -1141,7 +1141,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
34 changes: 17 additions & 17 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: b8161ed651945695164e296dbda3465d288ea19dcdf8d0ef6e84a1cc92af5cdd
a100-any: 3fda24847acd0e9e1fd1761b250222414d4c3890b827c451ab849923fb69f6a2
a100-eks-ubuntu-training-kubeflow: efe1f32719432689bd496d826d8b673e588d2d45b8698a141e713f2d29927192
a100-gke-cos-training-kubeflow: 3835ccd38d6fc1cece73abed272ffa2f88b2de7271c19c0471c92aa6bad157dd
a100-oke-ubuntu-training-kubeflow: 89b090edae168a9a2a8ee3f7fc7330e1417ebcd9ddd22c279ad48e48d4def1c9
b200-any: 0f1d82bf9d57bdc62b5bca97e4dd51512888a66875499155ef31ab5cbd186dfc
a100-any: 8f6e700544dfd93a8be31a148badb32829924807aa1d13c2db2b80527e94c365
a100-eks-ubuntu-training-kubeflow: 9d87274b22b1e3a3c35cee9f884ee00aa8bf2d98c75c7961be6d055ca8b2b4c4
a100-gke-cos-training-kubeflow: 5bfae64e203fdc096e7e5df3d912d45fbf98e79543248c380c73e59562e059f6
a100-oke-ubuntu-training-kubeflow: 5c46cfdaf69b6f38d2b3b377fc5641b5aa6c84b1030fe97426dc4874ed0a5819
b200-any: b0a2e105824bd5042396bbdc91529a5986a62d7e0e2be5fd41a4ee31bc3ab24d
b200-gke-cos-inference-dynamo: 22f2ee25485c9cba13ce6b566354fee292bf7ed744aa292b9892e2f6f603d3fc
b200-gke-cos-training-kubeflow: 0d72edc6fe724e87aaa278a60e31fd852b995b978ed7c7768b1ea1ed8cb71864
bcm-inference: 0de8f37c9026519148af9d1f915e0cb35cef0799d39eb19a9f10736f54170742
gb200-any: 90d5b0863d470b5e3e46a73e4cfba208e64075f001004684c53f701fe46f203c
gb200-any: 5523fb162d04b85010ea14adcacde848823051530ecb2e0784d27bc5c0e10e1a
gb200-eks-ubuntu-inference-dynamo: 750f8596ceaabd823c3de31a619bae6a69314bdac0de353792b7cbc40d2fb14a
gb200-eks-ubuntu-training-kubeflow: f9de625240b1836d2d940cef2da8b989bd42d78e73273230ea7bd1b693345f9f
gb200-eks-ubuntu-training-slurm: 52c6c3858c36742d53f23ee36c5cb47859ef5b61ff2c9bbc49e932570b617f62
gb200-oke-ubuntu-inference-dynamo: bcbe7c746baa48e9ea619e2bcaf3ed06999b9424418cd316bdc616a7dd41959d
gb200-oke-ubuntu-training-kubeflow: 090e678f7ff902fdce9a06afcb5b30aea11a4b90c86979a6ca9059fbd9c14605
gb300-any: 1c5c2d474532a7221483053967d56dcdca25d748c01370b478c22946a8973fc7
gb300-any: 357198d4ae6a0e73528cf0ceda23258213e7eddba5f83aa25f133562bdaf65b0
gb300-eks-ubuntu-inference-dynamo: 4f6177e36fa86210e66d627ab92ce44338866796a96609e4461e1cc760046421
gb300-eks-ubuntu-training-kubeflow: 0d6b69f81dd4919d02ebad13324b5a1efe3b3efdb783bf91f5454eca194c57fc
h100-aks-ubuntu-inference-dynamo: 7c7dab309ed6f940c49a08914ad55886dbd28a77036ba244f65624ef4cc079f7
h100-aks-ubuntu-training-kubeflow: 5f5d9d468a54571bded9030a968a684a43779161dd0a487521283355bd19560d
h100-aks-ubuntu-training-slurm: 8544a761f71c8577952126a19c9a973b0890826d1680c89ec2ff63540d1b1ef6
h100-any: db2ac4995dd1699023f5f470029250e997fb5b1a742084a8fac86416ddac5632
h100-any: 9a1e512c6d7fec5f9920ffc2d4b1f036fe59ba80322d4de286d931685bac70d5
h100-bcm-ubuntu-training: cba1fe3491fe878683a4a99fe0af5bf08673b3d4ad21669351d6ce719b313ca3
h100-eks-ubuntu-inference-dynamo: 0339ba1f42f68cc1d683ee8cbc5cbd35806c0524d13251107024f63cd9b13af4
h100-eks-ubuntu-inference-nim: 6b6446a298885359b76f697970c33b80ace95de9cc0a4ab549fe58b8e579ec80
Expand All @@ -36,19 +36,19 @@ h100-gke-cos-training-slurm: edbbfa71d6dd096bf32d73412929f5779eafd5e172c99083909
h100-kind-inference-dynamo: 41f81a662fe2563a84de83964e88d17b0f5babba19f55e81540f18d7ccdd0902
h100-kind-training-kubeflow: 1c589e48629c86e5c8b7db3de708fb502bed7a4e48468a635e5da92cb83c3c1d
h100-kind-training-slurm: c8f780ca26d66c5191ba97409fdf9f49c5226eb78fee6ed54e06d05490b2215a
h200-any: 40cd70c567e4010fafc2336f0a97441009b005dd7eab3ddf917965ca64bacb5a
h200-any: 8f30849eac9a8489ce02ea195d538f6f76ce8afb0bcf1c8515843869bd304024
h200-eks-inference: dbbeb66fc64382271916197fb24d951d10a5d4972c59aa7931438e5e3ec151f0
h200-eks-training: 14db15267d453edbe3e4121fd1933cae633f2377c3aa6c198e97dc076f8cd464
l40-any: 069343d9a016841bbfef280ab123040750a553814c07c8f770fd2009f6c2dde8
l40s-any: dcbf859b1cf9522b7a4d1b12fbb8f01b7dfa2c159d93d446bd4e4527a44b1285
l40s-oke-inference: 48a74d265f7ba8315a346c2934c2e868deb54f85171ccfb2907537dfce0d500b
l40s-oke-training: 2e7feb830c090f03bdcb6003c4e155bce249030b30ccbef92fc602fe044be667
monitoring-hpa: 56c321574b7f8a5e94a71d1d8d9f35d8091f7303c3063c2c00eaabe02a6171bb
l40-any: da7bb3a2831930ddb224927d3ebfb5a5dd65d3c9a128c632aad413fb29c0e28b
l40s-any: 8c2f0d3ff1e2f0b5df3869650d3e74ec3808484f52949726bfd5db9c409c8199
l40s-oke-inference: 69696a6ec37fc930d5fe728d28f979badb9ef9f6a4fa45a39a58b99c981c93ec
l40s-oke-training: 4afd8779e7c706530cd2936fdf0ce7537f86c9cbc019e02c4e05a6787cb31310
monitoring-hpa: 1e4f15813317d9b472f66cedd8a280a1555a0a7e3142ba9c3dbfb014e578fbcd
ocp-inference-nim: 67cb04b6ad946fe56ce423972ec0692ebe8ad66f571f29e94536ae0124eee91c
ocp-training: 1082d9d2f5b8dd302d498ab9cb6c936dd6f95996f65e5ce41746ff84aefed04e
rtx-pro-6000-any: ba7efb6b6b1aa683e15e562748bb3f6ca8ac497217e81c643de2268ee7b63966
rtx-pro-6000-any: ca387e660b770165b828770102eaa0396b8a51f7157d78a2c714c631d5ecf70d
rtx-pro-6000-eks-ubuntu-inference-dynamo: f9a9755ecd50b698af1d51fe08f107543c442538cad3b4f1e033ccb9c7128947
rtx-pro-6000-eks-ubuntu-inference-nim: 53c99f5cde980798745ed84acff78b18035ee649e78e945bac8bc1029a32f986
rtx-pro-6000-eks-ubuntu-training-kubeflow: 6c6ad11d9bfb44518abdf37e576c0df08eb432a2d47b01a79b3477ee63e80775
rtx-pro-6000-lke-ubuntu-inference: 0b62aab1bb38500db14723597997cfc1f9dc0e449b13102179027822ba58df64
rtx-pro-6000-lke-ubuntu-training: db349f2e58ab99e9374da166419e7011e5411ef9d513d81b2fd0c4ebcc733acb
rtx-pro-6000-lke-ubuntu-inference: ce3fb000f39d710548db9b056613367ce0a8c87253417777a03c594afa10e864
rtx-pro-6000-lke-ubuntu-training: e1f3fb5a0a31c8169490a589bca3cdc9b4b6b80adb862280cbac45cfaf7040ca
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 @@ -1272,7 +1272,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