Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
- Scoped admission `runtimeClassName` injection to GPU fraction pods only; whole-GPU pods are no longer mutated. `admission.gpuPodRuntimeClassName` is deprecated in favor of `admission.gpuFractionRuntimeClassName`. Reservation pod `runtimeClassName` now defaults to empty. [#1543](https://github.com/kai-scheduler/KAI-Scheduler/issues/1543) [davidLif](https://github.com/davidLif)
- Removed redundant `PodDisruptionBudgetImplemented` guard from operator PDB creation helper [#1613](https://github.com/kai-scheduler/KAI-Scheduler/pull/1613) [dttung2905](https://github.com/dttung2905)
- Updated Go toolchain and base build images to v1.26.3.
- Reverted the `k8s.io/*` module group to v0.34.3, `k8s.io/kubernetes` to v1.34.2, and `sigs.k8s.io/controller-runtime` to v0.22.3.
- **Breaking:** The podgroup produced for JobSet is now produces as a single PodGroup per JobSet with a two-level SubGroup hierarchy (one parent SubGroup per `replicatedJob`, one leaf SubGroup per replica) regardless of `startupPolicyOrder`. The `kai.scheduler/batch-min-member` annotation on the JobSet now overrides the root `minSubGroup`; the same annotation on `replicatedJobs[].template.metadata.annotations` overrides the leaf `minMember` (defaulting to `template.spec.parallelism`). [#1617](https://github.com/kai-scheduler/KAI-Scheduler/pull/1617) [davidLif](https://github.com/davidLif)

### Fixed
Expand Down
4 changes: 2 additions & 2 deletions build/makefile/testenv.mk
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
ENVTEST_K8S_VERSION = 1.35.0
ENVTEST_VERSION=release-0.23
ENVTEST_K8S_VERSION = 1.34.0
ENVTEST_VERSION=release-0.22

E2E_TESTS_DIR = "test/e2e/"
TEST_TARGETS = $(shell go list ./... | grep -v "${E2E_TESTS_DIR}")
Expand Down
2 changes: 1 addition & 1 deletion cmd/admission/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ func (app *App) Run() error {

// +kubebuilder:scaffold:builder

if err = ctrl.NewWebhookManagedBy(app.manager, &corev1.Pod{}).
if err = ctrl.NewWebhookManagedBy(app.manager).For(&corev1.Pod{}).
WithDefaulter(admissionhooks.NewPodMutator(app.manager.GetClient(), app.admissionPlugins, app.Options.SchedulerName)).
WithValidator(admissionhooks.NewPodValidator(app.manager.GetClient(), app.admissionPlugins, app.Options.SchedulerName)).Complete(); err != nil {
setupLog.Error(err, "unable to create pod webhooks", "webhook", "Pod")
Expand Down
4 changes: 3 additions & 1 deletion cmd/binder/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,9 @@ func New(options *Options, config *rest.Config) (*App, error) {
kubeClient := draversionawareclient.NewDRAAwareClient(kubernetes.NewForConfigOrDie(config))
informerFactory := informers.NewSharedInformerFactory(kubeClient, 0)

featuregates.SetDRAFeatureGate(kubeClient.Discovery())
if err := featuregates.SetDRAFeatureGate(kubeClient.Discovery()); err != nil {
setupLog.Error(err, "unable to set DRA feature gate")
}

rrs := resourcereservation.NewService(options.FakeGPUNodes, clientWithWatch, options.ResourceReservationPodImage,
time.Duration(options.ResourceReservationAllocationTimeout)*time.Second,
Expand Down
3 changes: 2 additions & 1 deletion cmd/queuecontroller/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,8 @@ func Run(opts *Options, clientConfig *rest.Config, ctx context.Context) error {
}

if opts.EnableWebhook {
if err = ctrl.NewWebhookManagedBy(mgr, &v2.Queue{}).
if err = ctrl.NewWebhookManagedBy(mgr).
For(&v2.Queue{}).
WithValidator(queuehooks.NewQueueValidator(mgr.GetClient(), opts.EnableQuotaValidation)).
Complete(); err != nil {
setupLog.Error(err, "unable to create webhook for queue v2", "webhook", "Queue")
Expand Down
9 changes: 3 additions & 6 deletions deployments/kai-scheduler/crds/kai.scheduler_configs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3975,10 +3975,9 @@ spec:
operator:
description: |-
Operator represents a key's relationship to the value.
Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal.
Valid operators are Exists and Equal. 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).
type: string
tolerationSeconds:
description: |-
Expand Down Expand Up @@ -4262,10 +4261,9 @@ spec:
operator:
description: |-
Operator represents a key's relationship to the value.
Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal.
Valid operators are Exists and Equal. 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).
type: string
tolerationSeconds:
description: |-
Expand Down Expand Up @@ -6705,10 +6703,9 @@ spec:
operator:
description: |-
Operator represents a key's relationship to the value.
Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal.
Valid operators are Exists and Equal. 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).
type: string
tolerationSeconds:
description: |-
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ spec:
to decide whether it needs to validate them.

Must be a DNS subdomain and should end with a DNS domain owned by the
vendor of the driver. It should use only lower case characters.
vendor of the driver.
type: string
parameters:
description: |-
Expand Down Expand Up @@ -221,7 +221,7 @@ spec:
needed on a node.

Must be a DNS subdomain and should end with a DNS domain owned by the
vendor of the driver. It should use only lower case characters.
vendor of the driver.
type: string
pool:
description: |-
Expand Down
64 changes: 32 additions & 32 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -43,36 +43,36 @@ require (
gopkg.in/yaml.v2 v2.4.0
gopkg.in/yaml.v3 v3.0.1
gotest.tools v2.2.0+incompatible
k8s.io/api v0.35.4
k8s.io/apiextensions-apiserver v0.35.4
k8s.io/apimachinery v0.35.4
k8s.io/apiserver v0.35.4
k8s.io/api v0.34.3
k8s.io/apiextensions-apiserver v0.34.3
k8s.io/apimachinery v0.34.3
k8s.io/apiserver v0.34.3
k8s.io/autoscaler/vertical-pod-autoscaler v1.5.1
k8s.io/cli-runtime v0.35.4
k8s.io/client-go v0.35.4
k8s.io/cluster-bootstrap v0.35.4
k8s.io/component-base v0.35.4
k8s.io/component-helpers v0.35.4
k8s.io/cri-client v0.35.4
k8s.io/dynamic-resource-allocation v0.35.4
k8s.io/endpointslice v0.35.4
k8s.io/externaljwt v0.35.4
k8s.io/klog/v2 v2.140.0
k8s.io/kube-aggregator v0.35.4
k8s.io/kube-controller-manager v0.35.4
k8s.io/kube-proxy v0.35.4
k8s.io/kube-scheduler v0.35.4
k8s.io/kubectl v0.35.4
k8s.io/kubelet v0.35.4
k8s.io/kubernetes v1.35.4
k8s.io/metrics v0.35.4
k8s.io/mount-utils v0.35.4
k8s.io/pod-security-admission v0.35.4
k8s.io/sample-apiserver v0.35.4
k8s.io/cli-runtime v0.34.1
k8s.io/client-go v0.34.3
k8s.io/cluster-bootstrap v0.34.1
k8s.io/component-base v0.34.3
k8s.io/component-helpers v0.34.1
k8s.io/cri-client v0.34.1
k8s.io/dynamic-resource-allocation v0.34.1
k8s.io/endpointslice v0.34.2
k8s.io/externaljwt v0.34.1
k8s.io/klog/v2 v2.130.1
k8s.io/kube-aggregator v0.34.1
k8s.io/kube-controller-manager v0.34.1
k8s.io/kube-proxy v0.34.1
k8s.io/kube-scheduler v0.34.1
k8s.io/kubectl v0.34.1
k8s.io/kubelet v0.34.1
k8s.io/kubernetes v1.34.2
k8s.io/metrics v0.34.1
k8s.io/mount-utils v0.34.1
k8s.io/pod-security-admission v0.34.1
k8s.io/sample-apiserver v0.34.1
k8s.io/utils v0.0.0-20260319190234-28399d86e0b5
knative.dev/pkg v0.0.0-20260120122510-4a022ed9999a
knative.dev/serving v0.48.1
sigs.k8s.io/controller-runtime v0.23.3
sigs.k8s.io/controller-runtime v0.22.3
sigs.k8s.io/jobset v0.10.1
sigs.k8s.io/karpenter v1.2.0
sigs.k8s.io/kwok v0.6.1
Expand Down Expand Up @@ -189,16 +189,16 @@ require (
google.golang.org/protobuf v1.36.11 // indirect
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
k8s.io/cloud-provider v0.35.4 // indirect
k8s.io/controller-manager v0.35.4 // indirect
k8s.io/cri-api v0.35.4 // indirect
k8s.io/csi-translation-lib v0.35.4 // indirect
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect
k8s.io/cloud-provider v0.34.1 // indirect
k8s.io/controller-manager v0.34.1 // indirect
k8s.io/cri-api v0.34.1 // indirect
k8s.io/csi-translation-lib v0.34.1 // indirect
k8s.io/kube-openapi v0.0.0-20250814151709-d7b6acb124c3 // indirect
knative.dev/networking v0.0.0-20260120131110-a7cdca238a0d // indirect
sigs.k8s.io/gateway-api v1.4.0 // indirect
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
sigs.k8s.io/randfill v1.0.0 // indirect
sigs.k8s.io/structured-merge-diff/v6 v6.3.2-0.20260122202528-d9cc6641c482 // indirect
sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
)

retract (
Expand Down
Loading
Loading