Skip to content

Commit 5d7f186

Browse files
hakmanCiprian Hacman
authored andcommitted
feat: Add support for karpenter.azure.com/sku-series label/selector
Signed-off-by: Ciprian Hacman <[email protected]> Signed-off-by: Ciprian Hacman <[email protected]>
1 parent e7865d5 commit 5d7f186

File tree

10 files changed

+20
-12
lines changed

10 files changed

+20
-12
lines changed

charts/karpenter-crd/templates/karpenter.sh_nodeclaims.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ spec:
131131
- message: label "kubernetes.io/hostname" is restricted
132132
rule: self != "kubernetes.io/hostname"
133133
- message: label domain "karpenter.azure.com" is restricted
134-
rule: self in [ "karpenter.azure.com/aksnodeclass", "karpenter.azure.com/sku-name", "karpenter.azure.com/sku-family", "karpenter.azure.com/sku-version", "karpenter.azure.com/sku-cpu", "karpenter.azure.com/sku-memory", "karpenter.azure.com/sku-networking-accelerated", "karpenter.azure.com/sku-storage-premium-capable", "karpenter.azure.com/sku-storage-ephemeralos-maxsize", "karpenter.azure.com/sku-gpu-name", "karpenter.azure.com/sku-gpu-manufacturer", "karpenter.azure.com/sku-gpu-count" ] || !self.find("^([^/]+)").endsWith("karpenter.azure.com")
134+
rule: self in [ "karpenter.azure.com/aksnodeclass", "karpenter.azure.com/sku-name", "karpenter.azure.com/sku-family", "karpenter.azure.com/sku-series", "karpenter.azure.com/sku-version", "karpenter.azure.com/sku-cpu", "karpenter.azure.com/sku-memory", "karpenter.azure.com/sku-networking-accelerated", "karpenter.azure.com/sku-storage-premium-capable", "karpenter.azure.com/sku-storage-ephemeralos-maxsize", "karpenter.azure.com/sku-gpu-name", "karpenter.azure.com/sku-gpu-manufacturer", "karpenter.azure.com/sku-gpu-count" ] || !self.find("^([^/]+)").endsWith("karpenter.azure.com")
135135
minValues:
136136
description: |-
137137
This field is ALPHA and can be dropped or replaced at any time

charts/karpenter-crd/templates/karpenter.sh_nodepools.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ spec:
208208
- message: label "kubernetes.io/hostname" is restricted
209209
rule: self.all(x, x != "kubernetes.io/hostname")
210210
- message: label domain "karpenter.azure.com" is restricted
211-
rule: self.all(x, x in [ "karpenter.azure.com/aksnodeclass", "karpenter.azure.com/sku-name", "karpenter.azure.com/sku-family", "karpenter.azure.com/sku-version", "karpenter.azure.com/sku-cpu", "karpenter.azure.com/sku-memory", "karpenter.azure.com/sku-networking-accelerated", "karpenter.azure.com/sku-storage-premium-capable", "karpenter.azure.com/sku-storage-ephemeralos-maxsize", "karpenter.azure.com/sku-gpu-name", "karpenter.azure.com/sku-gpu-manufacturer", "karpenter.azure.com/sku-gpu-count" ] || !x.find("^([^/]+)").endsWith("karpenter.azure.com"))
211+
rule: self.all(x, x in [ "karpenter.azure.com/aksnodeclass", "karpenter.azure.com/sku-name", "karpenter.azure.com/sku-family", "karpenter.azure.com/sku-series", "karpenter.azure.com/sku-version", "karpenter.azure.com/sku-cpu", "karpenter.azure.com/sku-memory", "karpenter.azure.com/sku-networking-accelerated", "karpenter.azure.com/sku-storage-premium-capable", "karpenter.azure.com/sku-storage-ephemeralos-maxsize", "karpenter.azure.com/sku-gpu-name", "karpenter.azure.com/sku-gpu-manufacturer", "karpenter.azure.com/sku-gpu-count" ] || !x.find("^([^/]+)").endsWith("karpenter.azure.com"))
212212
type: object
213213
spec:
214214
description: |-
@@ -281,7 +281,7 @@ spec:
281281
- message: label "kubernetes.io/hostname" is restricted
282282
rule: self != "kubernetes.io/hostname"
283283
- message: label domain "karpenter.azure.com" is restricted
284-
rule: self in [ "karpenter.azure.com/aksnodeclass", "karpenter.azure.com/sku-name", "karpenter.azure.com/sku-family", "karpenter.azure.com/sku-version", "karpenter.azure.com/sku-cpu", "karpenter.azure.com/sku-memory", "karpenter.azure.com/sku-networking-accelerated", "karpenter.azure.com/sku-storage-premium-capable", "karpenter.azure.com/sku-storage-ephemeralos-maxsize", "karpenter.azure.com/sku-gpu-name", "karpenter.azure.com/sku-gpu-manufacturer", "karpenter.azure.com/sku-gpu-count" ] || !self.find("^([^/]+)").endsWith("karpenter.azure.com")
284+
rule: self in [ "karpenter.azure.com/aksnodeclass", "karpenter.azure.com/sku-name", "karpenter.azure.com/sku-family", "karpenter.azure.com/sku-series", "karpenter.azure.com/sku-version", "karpenter.azure.com/sku-cpu", "karpenter.azure.com/sku-memory", "karpenter.azure.com/sku-networking-accelerated", "karpenter.azure.com/sku-storage-premium-capable", "karpenter.azure.com/sku-storage-ephemeralos-maxsize", "karpenter.azure.com/sku-gpu-name", "karpenter.azure.com/sku-gpu-manufacturer", "karpenter.azure.com/sku-gpu-count" ] || !self.find("^([^/]+)").endsWith("karpenter.azure.com")
285285
minValues:
286286
description: |-
287287
This field is ALPHA and can be dropped or replaced at any time

designs/gpu-selection-and-bootstrap.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,10 +107,11 @@ The Requirements API needs to provide an interface for selecting GPU SKUs, sizes
107107

108108
Here are some relevant labels:
109109

110-
| Label | Description |
111-
|---------------------------------------|-------------------------------------------|
112-
| `karpenter.azure.com/sku-family` | Family of the SKU (N) for GPU |
113-
| `karpenter.azure.com/sku-cpu` | Number of virtual CPUs |
110+
| Label | Description |
111+
|----------------------------------|-------------------------------|
112+
| `karpenter.azure.com/sku-family` | Family of the SKU (N) for GPU |
113+
| `karpenter.azure.com/sku-series` | Series of the SKU |
114+
| `karpenter.azure.com/sku-cpu` | Number of virtual CPUs |
114115

115116
**Note:** GPU SKUs usually support only a single hypervisor generation. Explicit image selection is moot in most cases, though there are some exceptions.
116117

hack/validation/labels.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ rule=$'self.all(x, x in
99
"karpenter.azure.com/aksnodeclass",
1010
"karpenter.azure.com/sku-name",
1111
"karpenter.azure.com/sku-family",
12+
"karpenter.azure.com/sku-series",
1213
"karpenter.azure.com/sku-version",
1314
"karpenter.azure.com/sku-cpu",
1415
"karpenter.azure.com/sku-memory",

hack/validation/requirements.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ rule=$'self in
99
"karpenter.azure.com/aksnodeclass",
1010
"karpenter.azure.com/sku-name",
1111
"karpenter.azure.com/sku-family",
12+
"karpenter.azure.com/sku-series",
1213
"karpenter.azure.com/sku-version",
1314
"karpenter.azure.com/sku-cpu",
1415
"karpenter.azure.com/sku-memory",

pkg/apis/crds/karpenter.sh_nodeclaims.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ spec:
131131
- message: label "kubernetes.io/hostname" is restricted
132132
rule: self != "kubernetes.io/hostname"
133133
- message: label domain "karpenter.azure.com" is restricted
134-
rule: self in [ "karpenter.azure.com/aksnodeclass", "karpenter.azure.com/sku-name", "karpenter.azure.com/sku-family", "karpenter.azure.com/sku-version", "karpenter.azure.com/sku-cpu", "karpenter.azure.com/sku-memory", "karpenter.azure.com/sku-networking-accelerated", "karpenter.azure.com/sku-storage-premium-capable", "karpenter.azure.com/sku-storage-ephemeralos-maxsize", "karpenter.azure.com/sku-gpu-name", "karpenter.azure.com/sku-gpu-manufacturer", "karpenter.azure.com/sku-gpu-count" ] || !self.find("^([^/]+)").endsWith("karpenter.azure.com")
134+
rule: self in [ "karpenter.azure.com/aksnodeclass", "karpenter.azure.com/sku-name", "karpenter.azure.com/sku-family", "karpenter.azure.com/sku-series", "karpenter.azure.com/sku-version", "karpenter.azure.com/sku-cpu", "karpenter.azure.com/sku-memory", "karpenter.azure.com/sku-networking-accelerated", "karpenter.azure.com/sku-storage-premium-capable", "karpenter.azure.com/sku-storage-ephemeralos-maxsize", "karpenter.azure.com/sku-gpu-name", "karpenter.azure.com/sku-gpu-manufacturer", "karpenter.azure.com/sku-gpu-count" ] || !self.find("^([^/]+)").endsWith("karpenter.azure.com")
135135
minValues:
136136
description: |-
137137
This field is ALPHA and can be dropped or replaced at any time

pkg/apis/crds/karpenter.sh_nodepools.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ spec:
208208
- message: label "kubernetes.io/hostname" is restricted
209209
rule: self.all(x, x != "kubernetes.io/hostname")
210210
- message: label domain "karpenter.azure.com" is restricted
211-
rule: self.all(x, x in [ "karpenter.azure.com/aksnodeclass", "karpenter.azure.com/sku-name", "karpenter.azure.com/sku-family", "karpenter.azure.com/sku-version", "karpenter.azure.com/sku-cpu", "karpenter.azure.com/sku-memory", "karpenter.azure.com/sku-networking-accelerated", "karpenter.azure.com/sku-storage-premium-capable", "karpenter.azure.com/sku-storage-ephemeralos-maxsize", "karpenter.azure.com/sku-gpu-name", "karpenter.azure.com/sku-gpu-manufacturer", "karpenter.azure.com/sku-gpu-count" ] || !x.find("^([^/]+)").endsWith("karpenter.azure.com"))
211+
rule: self.all(x, x in [ "karpenter.azure.com/aksnodeclass", "karpenter.azure.com/sku-name", "karpenter.azure.com/sku-family", "karpenter.azure.com/sku-series", "karpenter.azure.com/sku-version", "karpenter.azure.com/sku-cpu", "karpenter.azure.com/sku-memory", "karpenter.azure.com/sku-networking-accelerated", "karpenter.azure.com/sku-storage-premium-capable", "karpenter.azure.com/sku-storage-ephemeralos-maxsize", "karpenter.azure.com/sku-gpu-name", "karpenter.azure.com/sku-gpu-manufacturer", "karpenter.azure.com/sku-gpu-count" ] || !x.find("^([^/]+)").endsWith("karpenter.azure.com"))
212212
type: object
213213
spec:
214214
description: |-
@@ -281,7 +281,7 @@ spec:
281281
- message: label "kubernetes.io/hostname" is restricted
282282
rule: self != "kubernetes.io/hostname"
283283
- message: label domain "karpenter.azure.com" is restricted
284-
rule: self in [ "karpenter.azure.com/aksnodeclass", "karpenter.azure.com/sku-name", "karpenter.azure.com/sku-family", "karpenter.azure.com/sku-version", "karpenter.azure.com/sku-cpu", "karpenter.azure.com/sku-memory", "karpenter.azure.com/sku-networking-accelerated", "karpenter.azure.com/sku-storage-premium-capable", "karpenter.azure.com/sku-storage-ephemeralos-maxsize", "karpenter.azure.com/sku-gpu-name", "karpenter.azure.com/sku-gpu-manufacturer", "karpenter.azure.com/sku-gpu-count" ] || !self.find("^([^/]+)").endsWith("karpenter.azure.com")
284+
rule: self in [ "karpenter.azure.com/aksnodeclass", "karpenter.azure.com/sku-name", "karpenter.azure.com/sku-family", "karpenter.azure.com/sku-series", "karpenter.azure.com/sku-version", "karpenter.azure.com/sku-cpu", "karpenter.azure.com/sku-memory", "karpenter.azure.com/sku-networking-accelerated", "karpenter.azure.com/sku-storage-premium-capable", "karpenter.azure.com/sku-storage-ephemeralos-maxsize", "karpenter.azure.com/sku-gpu-name", "karpenter.azure.com/sku-gpu-manufacturer", "karpenter.azure.com/sku-gpu-count" ] || !self.find("^([^/]+)").endsWith("karpenter.azure.com")
285285
minValues:
286286
description: |-
287287
This field is ALPHA and can be dropped or replaced at any time

pkg/apis/v1beta1/labels.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ func init() {
2929
karpv1.WellKnownLabels = karpv1.WellKnownLabels.Insert(
3030
LabelSKUName,
3131
LabelSKUFamily,
32+
LabelSKUSeries,
3233
LabelSKUVersion,
3334

3435
LabelSKUCPU,
@@ -72,8 +73,9 @@ var (
7273
HyperVGenerationV2 = "2"
7374
ManufacturerNvidia = "nvidia"
7475

75-
LabelSKUName = Group + "/sku-name" // Standard_A1_v2
76-
LabelSKUFamily = Group + "/sku-family" // A
76+
LabelSKUName = Group + "/sku-name" // Standard_D4pls_v6
77+
LabelSKUFamily = Group + "/sku-family" // D
78+
LabelSKUSeries = Group + "/sku-series" // Dpls_v6
7779
LabelSKUVersion = Group + "/sku-version" // numerical (without v), with 1 backfilled
7880

7981
LabelSKUCPU = Group + "/sku-cpu" // sku.vCPUs

pkg/providers/instancetype/instancetype.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ func computeRequirements(sku *skewer.SKU, vmsize *skewer.VMSizeType, architectur
164164

165165
// size parts
166166
scheduling.NewRequirement(v1beta1.LabelSKUFamily, corev1.NodeSelectorOpDoesNotExist),
167+
scheduling.NewRequirement(v1beta1.LabelSKUSeries, corev1.NodeSelectorOpDoesNotExist),
167168
scheduling.NewRequirement(v1beta1.LabelSKUVersion, corev1.NodeSelectorOpDoesNotExist),
168169

169170
// SKU capabilities
@@ -179,6 +180,7 @@ func computeRequirements(sku *skewer.SKU, vmsize *skewer.VMSizeType, architectur
179180

180181
// size parts
181182
requirements[v1beta1.LabelSKUFamily].Insert(vmsize.Family)
183+
requirements[v1beta1.LabelSKUSeries].Insert(vmsize.Series)
182184

183185
setRequirementsEphemeralOSDiskSupported(requirements, sku)
184186
setRequirementsHyperVGeneration(requirements, sku)

pkg/providers/instancetype/suite_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1482,6 +1482,7 @@ var _ = Describe("InstanceType Provider", func() {
14821482
// Well Known to AKS
14831483
v1beta1.LabelSKUName: "Standard_NC24ads_A100_v4",
14841484
v1beta1.LabelSKUFamily: "N",
1485+
v1beta1.LabelSKUSeries: "NCads_v4",
14851486
v1beta1.LabelSKUVersion: "4",
14861487
v1beta1.LabelSKUStorageEphemeralOSMaxSize: "429",
14871488
v1beta1.LabelSKUAcceleratedNetworking: "true",

0 commit comments

Comments
 (0)