-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Description
Enhancement Description
Currently, Kubernetes tolerations and NodeAffinity rules lack semantic versioning support. This feature will allow filtering based on semver ranges (e.g., >=v1.26.0). This enables clean support for firmware checks, Kubernetes version preferences, and other semver-based scheduling use cases.
Example
tolerations:
- key: "node.kubernetes.io/kubelet-version"
operator: "SemverGt"
value: "v1.28.0"
This enhancement introduces semver-based toleration operators, SemverGt
, SemverLt
, SemverEq
. and support semver comparison using CEL
.
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: "kubeletVersion"
operator: "In"
values: ["v1.28.0"]
matchFields:
- key: "metadata.labels['node.kubernetes.io/kubelet-version']"
operator: Exists
matchExpressionsWithCEL:
- expression: semver_compare(metadata.labels['node.kubernetes.io/kubelet-version'], ">=1.27.0")
Background
Current KEP #5473 focuses on integer-only compliance for SLA/failure-probability for tolerations. However, semver handling is widely applicable:
- Comparing node kubelet versions (e.g., feature gating)
- Firmware version targeting for device scheduling
- Ensuring backward compatibility enforcement in heterogeneous clusters
Accommodating semver operators and CEL expression would make scheduling more flexible and future-proof.
/sig scheduling
/sig apps
- One-line enhancement description (can be used as a release note): Add Semantic Version Comparison and CEL expression Support to Tolerations and NodeAffinity
- Kubernetes Enhancement Proposal:
- Discussion Link: KEP-5471 Extended Toleration Operators for Threshold-Based Placement #5473 (comment)
- PRs by stage and milestone:
- Alpha - v1.xx
- KEP (
k/enhancements
) update PR(s): - Code (
k/k
) update PR(s): - Docs (
k/website
) update PR(s):
- KEP (
- Alpha - v1.xx
Please keep this description up to date. This will help the Enhancement Team to track the evolution of the enhancement efficiently.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
Status