Skip to content

Add semver comparison and CEL expressions support to Tolerations and NodeAffinity #5500

@helayoty

Description

@helayoty

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):

Please keep this description up to date. This will help the Enhancement Team to track the evolution of the enhancement efficiently.

Metadata

Metadata

Assignees

No one assigned

    Labels

    sig/appsCategorizes an issue or PR as relevant to SIG Apps.sig/schedulingCategorizes an issue or PR as relevant to SIG Scheduling.stage/alphaDenotes an issue tracking an enhancement targeted for Alpha status

    Type

    No type

    Projects

    Status

    Backlog

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions