From 5020b674f89e73096347295ebefa39f6aa353370 Mon Sep 17 00:00:00 2001 From: Heba <31887807+helayoty@users.noreply.github.com> Date: Mon, 10 Nov 2025 12:42:54 -0800 Subject: [PATCH] KEP-5471: Extend tolerations operators (#134665) * Add numeric operations to tolerations Signed-off-by: Heba Elayoty * code review feedback Signed-off-by: Heba Elayoty * add default feature gate Signed-off-by: Heba Elayoty * Add integration tests Signed-off-by: Heba Elayoty * Add toleration value validation Signed-off-by: Heba Elayoty * Add validate options for new operators Signed-off-by: helayoty * Remove log Signed-off-by: helayoty * Update feature gate check Signed-off-by: helayoty * emove IsValidNumericString func Signed-off-by: helayoty * Implement IsDecimalInteger Signed-off-by: helayoty * code review feedback Signed-off-by: helayoty * Add logs to v1/toleration Signed-off-by: Heba Elayoty Signed-off-by: helayoty * Update integration tests and address code review feedback Signed-off-by: helayoty * Add feature gate to the scheduler framework Signed-off-by: helayoty * Remove extra test Signed-off-by: helayoty * Fix integration test Signed-off-by: helayoty * pass feature gate via TolerationsTolerateTaint Signed-off-by: helayoty --------- Signed-off-by: Heba Elayoty Signed-off-by: helayoty Kubernetes-commit: aceb89debc2632c5c9956c8b7ef591426a485447 --- applyconfigurations/core/v1/toleration.go | 3 ++- go.mod | 4 ++-- go.sum | 8 ++++---- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/applyconfigurations/core/v1/toleration.go b/applyconfigurations/core/v1/toleration.go index 609051a40..1870cbf18 100644 --- a/applyconfigurations/core/v1/toleration.go +++ b/applyconfigurations/core/v1/toleration.go @@ -32,9 +32,10 @@ type TolerationApplyConfiguration struct { // If the key is empty, operator must be Exists; this combination means to match all values and all keys. Key *string `json:"key,omitempty"` // Operator represents a key's relationship to the value. - // Valid operators are Exists and Equal. Defaults to Equal. + // Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal. // Exists is equivalent to wildcard for value, so that a pod can // tolerate all taints of a particular category. + // Lt and Gt perform numeric comparisons (requires feature gate TaintTolerationComparisonOperators). Operator *corev1.TolerationOperator `json:"operator,omitempty"` // Value is the taint value the toleration matches to. // If the operator is Exists, the value should be empty, otherwise just a regular string. diff --git a/go.mod b/go.mod index 753824097..9a7c015aa 100644 --- a/go.mod +++ b/go.mod @@ -24,8 +24,8 @@ require ( golang.org/x/time v0.9.0 google.golang.org/protobuf v1.36.8 gopkg.in/evanphx/json-patch.v4 v4.13.0 - k8s.io/api v0.0.0-20251107002836-f1737241c064 - k8s.io/apimachinery v0.0.0-20251106231852-6f8949260573 + k8s.io/api v0.0.0-20251111002812-16a1b565cbbf + k8s.io/apimachinery v0.0.0-20251110204254-5a348c53eef0 k8s.io/klog/v2 v2.130.1 k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 diff --git a/go.sum b/go.sum index 52b39914e..e7cbea587 100644 --- a/go.sum +++ b/go.sum @@ -123,10 +123,10 @@ gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.0.0-20251107002836-f1737241c064 h1:n8Q6kd+Mwr2ce6QpIGlMKM31hhb0XkeNKKYc8mfv/pk= -k8s.io/api v0.0.0-20251107002836-f1737241c064/go.mod h1:KmeiqHqfbEx7y5cjOafexrDA1x0/NCS0EvYefr1M9eQ= -k8s.io/apimachinery v0.0.0-20251106231852-6f8949260573 h1:gNmsE5h0ynVpA5XKQBVSWKTogBPL4ecYdzF5get+L4A= -k8s.io/apimachinery v0.0.0-20251106231852-6f8949260573/go.mod h1:dR9KPaf5L0t2p9jZg/wCGB4b3ma2sXZ2zdNqILs+Sak= +k8s.io/api v0.0.0-20251111002812-16a1b565cbbf h1:0b/zJMiPTzd9w1SXnQJmOToRe5QSTIFunj6REtvzqgM= +k8s.io/api v0.0.0-20251111002812-16a1b565cbbf/go.mod h1:4cqSkQQk/TBOliV/4EGyKrjuBzosR3XlkobF5g/c68g= +k8s.io/apimachinery v0.0.0-20251110204254-5a348c53eef0 h1:uCi/FMiTM7303mfooUPf4sV2Zo049JgwqU7AMtYDFqQ= +k8s.io/apimachinery v0.0.0-20251110204254-5a348c53eef0/go.mod h1:dR9KPaf5L0t2p9jZg/wCGB4b3ma2sXZ2zdNqILs+Sak= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE=