Release v0.19.2
area/release
## Release Checklist
<!--
Please do not remove items from the checklist
-->
- [x] [OWNERS](https://github.com/kubernetes-sigs/kueue/blob/main/OWNERS) must LGTM the release proposal.
At least two for minor or major releases. At least one for a patch release.
- [ ] Verify that the changelog in this issue and the CHANGELOG folder is up-to-date
- [ ] Use `/sync-release-notes` to generate and publish the release notes
- [ ] For major or minor releases (`v$MAJ.$MIN.0`), use the `/create-release-branch` ChatOps command to create a new release branch.
- [ ] Update the release branch:
- [ ] Run `/prepare-pull release` ChatOps command (or locally: `./hack/releasing/prepare_pull.sh --target release $VERSION`)
- [ ] Wait for this PR to merge <!-- PREPARE_PULL_RELEASE --> <!-- example #211 -->
- [ ] Run ChatOps command `/tag-release` on this issue. This will:
- Extract the changelog from the issue description.
- Create the release tag at the tip of the release branch.
- Push the tag upstream (triggers Prow to build and publish staging container image: `us-central1-docker.pkg.dev/k8s-staging-images/kueue/kueue:$VERSION`).
- [ ] Run ChatOps command `/create-draft-release` on this issue. This will:
- Extract the changelog from the issue description.
- Create the draft release pointing out to the created tag.
- Write the change log into the draft release.
- Generate the artifacts in the `release-artifacts` folder.
- Upload the files in the `release-artifacts` folder to the draft release.
- [ ] Promote images and Helm Charts to production:
- [ ] Use `/wait-for-images` to await for the staging images.
- [ ] Run `./hack/releasing/promote_pull.sh $VERSION` to submit the promotion PR
- [ ] Wait for the PR to be merged <!-- K8S_IO_PULL --> <!-- example kubernetes/k8s.io#7899 -->
- [ ] Use `/wait-for-prod-images` to verify that the promoted images are available.
- [ ] Use `/publish-release` to publish the release prepared at the [GitHub releases page](https://github.com/kubernetes-sigs/kueue/releases).
Link: <!-- RELEASE_LINK --> <!-- example https://github.com/kubernetes-sigs/kueue/releases/tag/v0.1.0 -->
- [ ] Run the [openvex action](https://github.com/kubernetes-sigs/kueue/actions/workflows/openvex.yaml) to generate openvex data. The action will add the file to the release artifacts.
- [ ] Run the [SBOM action](https://github.com/kubernetes-sigs/kueue/actions/workflows/sbom.yaml) to generate the SBOM and add it to the release.
- [ ] Update the `main` branch :
- [ ] Run `/prepare-pull main` ChatOps command (or locally: `./hack/releasing/prepare_pull.sh --target main $VERSION`)
*Note: The script automatically detects if a newer version is already out and skips version updates if so. Specifying `--skip-version-updates` is not necessary in a default workflow.*
- [ ] Versioned docs are handled automatically during releases -- major, minor, and patch: the
`main`-update PR from `prepare_pull.sh` runs `hack/releasing/snapshot-docs.py`, which
freezes the release's docs into `site/content/<locale>/v$MAJ.$MIN/docs`, adds it to the
version dropdown, and prunes old snapshots. Patch releases re-freeze the existing snapshot
to the new patch version (e.g. v0.17.7 -> v0.17.8). No Netlify/DNS steps are required. Just
confirm the snapshot dirs and the `[[params.versions]]` entry are present in that PR.
- [ ] Wait for this PR to merge <!-- PREPARE_PULL_MAIN --> <!-- example #214 -->
- [ ] Cherry-pick the pull request onto the `website` branch
- [ ] For major and minor releases, merge the `main` branch into the `website` branch to publish the updated documentation.
- [ ] Send an announcement email to `sig-scheduling@kubernetes.io` and `wg-batch@kubernetes.io` with the subject `[ANNOUNCE] kueue $VERSION is released`. <!--Link: example https://groups.google.com/a/kubernetes.io/g/wg-batch/c/-gZOrSnwDV4 -->
- [ ] For a major or minor release, prepare the repo for the next version:
- [ ] Create an unannotated _devel_ tag in the
`main` branch, on the first commit that gets merged after the release
branch has been created (presumably the README update commit above), and, push the tag:
`DEVEL=v$MAJ.$(($MIN+1)).0-devel; git tag $DEVEL main && git push upstream $DEVEL`
This ensures that the devel builds on the `main` branch will have a meaningful version number.
- [ ] Create a milestone for the next minor release and update prow to set it automatically for new PRs:
<!-- example https://github.com/kubernetes/test-infra/pull/30222 -->
- [ ] Create the presubmits and the periodic jobs for the next patch release: <!-- CI_PULL -->
<!-- example: https://github.com/kubernetes/test-infra/pull/34561 -->
- [ ] Drop CI Jobs for testing the out-of-support branch: <!-- CI_PULL -->
<!-- example: https://github.com/kubernetes/test-infra/pull/34562 -->
## Changelog
<!-- release-changelog-start -->
```markdown
Changes since `v0.19.1`:
## Actions Required Before Upgrading
### (No, really, you MUST read this before you upgrade)
- **Minor releases:** Review the `.0` release notes for each new minor version you cross; see: [`v0.18.0`](https://github.com/kubernetes-sigs/kueue/releases/tag/v0.18.0), [`v0.19.0`](https://github.com/kubernetes-sigs/kueue/releases/tag/v0.19.0).
- **Patch releases:** Review the patch release notes leading up to this version, but *only* within this minor release line; see: [`v0.19.1`](https://github.com/kubernetes-sigs/kueue/releases/tag/v0.19.1).
## Changes by Kind
### Feature
- TAS: Reduced CPU time and memory allocations for snapshot creation by reusing cached topology trees when scheduling-relevant Node data is unchanged. Controlled by the `TASCacheTopologyTree` feature gate, which is Alpha and disabled by default. (#14639, @tenzen-y)
- WorkloadAwareScheduler: Delegated TAS node readiness and `spec.unschedulable` checks to the `scheduler-library` instead of applying them when building the TAS node cache. Controlled by the `SchedulerLibraryIntegration` feature gate, which is Alpha and disabled by default. (#14613, @alien1403)
### Bug or Regression
- AFS: Fixed entry-penalty accounting leaks that could inflate LocalQueue fair-sharing usage when a Workload was re-admitted or exited before settlement. (#14153, @apullo777)
- DRA: Fixed a bug where a negative extended-resource request quantity (reachable only when the `WorkloadValidateResourcesAreNonNegative` validation is disabled, or on a Workload created before that validation existed) could be merged as a negative DRA quota charge, silently offsetting a legitimate charge on the same logical resource. Negative extended-resource requests are now dropped the same way zero-valued ones already are. (#14655, @pujitha24)
- DRA: Fixed quota undercount when two extended resource names sharing a deviceClassMappings key were requested by different containers in the same PodSet. (#14200, @pujitha24)
- FairSharing: Collapsed the per-candidate FairSharing preemption log into one entry per ClusterQueue and serialize its DominantResourceShare values, reducing scheduler log volume at verbosity 4. (#14348, @venuchitta)
- FairSharing: skip the FairSharing preemption tournament when the preemptor's dominant resource share is +Inf, since no candidate can be preempted, avoiding wasted per-candidate evaluation and its V(4) log volume. (#14671, @venuchitta)
- Importer: Fixed a bug where the Pod importer picked a single ResourceFlavor for the whole Pod, so Pods whose resources map to different flavors could be imported with a wrong flavor assignment. Flavors are now resolved per requested resource. (#14579, @mszadkow)
- JobFramework: Fixed ancestor resolution to verify that each controller ownerReference's UID matches the referenced object. Previously an object whose ownerReference named a Kueue-managed ancestor with a stale or mismatched UID was treated as managed by that ancestor and was skipped by Kueue (not suspended/gated and no Workload created). (#14658, @vladikkuzn)
- LeaderWorkerSet: Fixed a bug where Pods of a LeaderWorkerSet admitted before the queue-name write moved into the LWS webhook could stay permanently SchedulingGated after an upgrade, eventually deactivating the Workload. Kueue now sets `kueue.x-k8s.io/queue-name` on LeaderWorkerSet Pods when adopting them and reconciles it on already-adopted gated Pods. (#14602, @anguszzzz)
- MPIJob: Fixed TAS defaulting for runLauncherAsWorker jobs with missing or additional replica-spec entries, preventing a webhook panic and preserving rank-based topology placement. (#14527, @thc1006)
- MultiKueue: Fixed a bug where a stale `status.nominatedClusterNames` could cause Server-Side Apply field manager conflicts with external dispatchers. Kueue now clears the field through a MutatingAdmissionPolicy when a Workload is admitted or evicted. (#14643, @vic-comm)
- MultiKueue: Fixed watch establishment to prevent timeouts from blocking indefinitely on delayed watch responses. (#14550, @Dasmat13)
- Observability: Fixed a bug where the `kueue_pod_scheduling_gate_removal_seconds` metric was missing the `replica_role` label (`leader`, `follower`, or `standalone`) carried by the other Kueue metrics. (#14488, @gangadhar-res)
- PodGroup integration: Fixed a bug where a Pod could bypass ClusterQueue quota by setting `kueue.x-k8s.io/pod-group-name` to another Workload's name. Kueue now only adopts Workloads created by the pod-group framework (stamped with `kueue.x-k8s.io/is-group-workload`), and no longer finalizes a foreign Workload that merely shares the pod group name, which previously marked it Finished and released its quota while its pods were still running. (#14630, @vladikkuzn)
- RayJob, RayCluster, RayService, and SparkApplication: Fixed a bug where removing the `kueue.x-k8s.io/queue-name` label from an unsuspended job was accepted, so the job stopped being managed by Kueue while its pods kept running and its resources were no longer counted against quota. Removing the label is now rejected, both from an unsuspended job and from a suspended job in a namespace with a default LocalQueue. Controlled by the `ValidateRayAndSparkJobUpdates` feature gate, which is Beta and enabled by default. (#14666, @ivnovakov)
- Scheduling: Fix preemption thrashing/loops caused by desynchronized eviction completion times by prioritizing preemptor workloads at the head of the scheduling queue. This is guarded by the PrioritizePreemptorWorkloads Alpha feature gate, disabled by default. (#14682, @Nilsachy)
- TAS: Fixed a bug where cross-flavor TAS usage was matched against topology domains a ResourceFlavor does not hold, adding redundant per-node work and V(3) log lines to every scheduling cycle. (#14174, @venuchitta)
- TAS: Fixed a bug where node replacement treated sibling topology domains with a common string prefix as the same domain. (#14452, @tomsen02)
- TAS: Fixed a bug where replacing an unhealthy node could assign a workload to a node already claimed by another workload in the same scheduling cycle, leaving its pod permanently Unschedulable until the PodsReady timeout evicted it. (#14647, @varunsyal)
- VisibilityOnDemand: Fixed a bug where the `PositionInLocalQueue` on the ClusterQueue `pendingworkloads` was being inflated when two LocalQueues in different namespaces share the same name (for example, the auto-created `default` LocalQueue). (#14435, @pujitha24)
- VisibilityOnDemand: Fixed a panic in the pending-workloads endpoints when prebuilt Workloads (BYOW) w/o priority are created (#14418, @thc1006)
- WaitForPodsReady: Fixed a bug where the `kueue_ready_wait_time_seconds`, `kueue_admitted_until_ready_wait_time`, `kueue_local_queue_ready_wait_time_seconds` and `kueue_local_queue_admitted_until_ready_wait_time_seconds` metrics were emitted after failure recovery, skewing the metric towards longer wait times. (#14638, @kshalot)
```
<!-- release-changelog-end -->
<!-- release-log-start -->
## Release log
<!-- entry-start title="Sync release notes" -->
### Sync release notes
Command: /sync-release-notes
Triggered by: @tenzen-y
Timestamp: 2026-08-20 13:43:16 UTC
Action link: https://github.com/kubernetes-sigs/kueue/actions/runs/32375553677
✅ Release notes for version `v0.19.2` have been synced.
<!-- entry-end -->
<!-- history-section-start -->
### History
<!-- history-start title="Sync release notes" -->
<details>
<summary><b>Sync release notes history</b></summary>
Triggered by: @tenzen-y
Timestamp: 2026-08-20 13:35:22 UTC
Action link: https://github.com/kubernetes-sigs/kueue/actions/runs/32374821329
✅ Release notes for version `v0.19.2` have been synced.
---
Triggered by: @tenzen-y
Timestamp: 2026-08-20 13:16:35 UTC
Action link: https://github.com/kubernetes-sigs/kueue/actions/runs/32373058410
✅ Release notes for version `v0.19.2` have been synced.
---
Triggered by: @tenzen-y
Timestamp: 2026-08-20 12:58:30 UTC
Action link: https://github.com/kubernetes-sigs/kueue/actions/runs/32371362413
✅ Release notes for version `v0.19.2` have been synced.
---
Triggered by: @tenzen-y
Timestamp: 2026-08-20 12:45:41 UTC
Action link: https://github.com/kubernetes-sigs/kueue/actions/runs/32370222759
✅ Release notes for version `v0.19.2` have been synced.
---
Triggered by: @Singularity23x0
Timestamp: 2026-08-20 11:08:56 UTC
Action link: https://github.com/kubernetes-sigs/kueue/actions/runs/32362117823
✅ Release notes for version `v0.19.2` have been synced.
---
Triggered by: @Singularity23x0
Timestamp: 2026-08-20 11:01:30 UTC
Action link: https://github.com/kubernetes-sigs/kueue/actions/runs/32361518824
✅ Release notes for version `v0.19.2` have been synced.
---
Triggered by: @Singularity23x0
Timestamp: 2026-08-20 10:54:36 UTC
Action link: https://github.com/kubernetes-sigs/kueue/actions/runs/32360942820
✅ Release notes for version `v0.19.2` have been synced.
---
Triggered by: @mbobrovskyi
Timestamp: 2026-08-20 10:24:56 UTC
Action link: https://github.com/kubernetes-sigs/kueue/actions/runs/32358558037
✅ Release notes for version `v0.19.2` have been synced.
---
Triggered by: @tenzen-y
Timestamp: 2026-08-19 23:40:30 UTC
Action link: https://github.com/kubernetes-sigs/kueue/actions/runs/32314035663
✅ Release notes for version `v0.19.2` have been synced.
---
Triggered by: @tenzen-y
Timestamp: 2026-08-15 00:28:09 UTC
Action link: https://github.com/kubernetes-sigs/kueue/actions/runs/31853549196
✅ Release notes for version `v0.19.2` have been synced.
---
Triggered by: @mimowo
Timestamp: 2026-08-12 22:35:05 UTC
Action link: https://github.com/kubernetes-sigs/kueue/actions/runs/31647351187
✅ Release notes for version `v0.19.2` have been synced.
---
Triggered by: @tenzen-y
Timestamp: 2026-08-12 19:04:11 UTC
Action link: https://github.com/kubernetes-sigs/kueue/actions/runs/31630545445
✅ Release notes for version `v0.19.2` have been synced.
</details>
<!-- history-end -->
<!-- release-log-end -->
27 条评论