Commit graph

1631 commits

Author SHA1 Message Date
uditDewan
2253c8d65b Fix unformatted UID in dynamicresources test error message 2026-07-11 02:37:44 -04:00
vshkrabkov
1d019e2477 podGroup as victim scenario into pod by pod preemption flow 2026-07-10 15:32:01 +00:00
Maciej Wyrzuc
00f22436be Reimplement WAP with in place filter reprieval 2026-07-10 11:36:02 +00:00
kubernetes-prow[bot]
310d9b8201
Merge pull request #139674 from GFilipek/feature/placement-post-filter
Feature: Add PodGroupPostFilter extension point
2026-07-09 18:56:33 +00:00
gfilipek
cff5332d57 framework: introduce and configure PodGroupPostFilter extension point iteration 2026-07-09 15:28:46 +00:00
Antoni Zawodny
0b06f1b862 Run PlacementFeasible before any Pod is attempted 2026-07-09 13:06:40 +02:00
Maciej Wyrzuc
cb5b7336d6 Add a message when preemption succeeds 2026-07-08 08:34:09 +00:00
Jon Huhn
7825e69cce DRA: check for allocated claim before marking in-flight
After PodGroup Pods have passed the scheduling cycle, the binding cycle
asynchronously invokes the Reserve and PreBind phases of the
DynamicResources plugin. When a shared ResourceClaim is first allocated,
other Pods in the group may have yet to reach the Reserve phase. If an
in-flight allocation is recorded in Reserve for a claim that is already
allocated, later removing that in-flight allocation results in
`Restore`-ing the claim in the assume cache to an old version that may
be unallocated. If the restored claim is unallocated, then the scheduler
continuously falls into a loop:

- Claim in AssumeCache is unallocated
- Pending allocation is recorded
- API GET in PreBind yields the allocated claim
- "claim got allocated elsewhere" error

This change cuts off that cycle by verifying that claims are actually
unallocated in the Reserve phase before recording an in-flight
allocation.
2026-07-07 11:38:27 -05:00
kubernetes-prow[bot]
70e2a4e6ba
Merge pull request #140222 from googs1025/dra-postfilter-event-cleanup-upstream
scheduler: reduce scheduler PostFilter event noise
2026-07-07 05:50:25 +00:00
Patrick Ohly
3d36421bb7 DRA Device Taints: use V1 API, enabled by default 2026-07-06 20:20:56 +02:00
kubernetes-prow[bot]
da0c8b65c9
Merge pull request #140247 from antekjb/embedShardListerToMutableSnapshotSharedLister
Embed SharedLister to MutableSnapshotSharedLister
2026-07-06 14:44:35 +00:00
CYJiang
2bfcf4d5c0 scheduler: clarify DRA PostFilter logs
Signed-off-by: CYJiang <googs1025@gmail.com>
2026-07-06 22:13:14 +08:00
kubernetes-prow[bot]
5f2bdc6de2
Merge pull request #140054 from googs1025/flake_scheduler
flake(scheduler): reactivate preemptor after in-memory preemption
2026-07-06 13:32:28 +00:00
kubernetes-prow[bot]
d9334175d1
Merge pull request #140208 from pohly/dra-resourceslice-informer-removal
DRA resourceslice tracker: ignore DeviceClass events
2026-07-06 11:08:27 +00:00
Antoni Basista
240564d592 Embed SharedLister to MutableSnapshotSharedLister and use MutableSnapshotSharedLister in preemption for snapshot access 2026-07-06 09:16:34 +00:00
Patrick Ohly
31b2c7f7e2 DRA resourceslice tracker: remove DeviceClass informer option
The informer is no longer used, so let's also clean up the options
to avoid confusion.
2026-07-06 09:32:29 +02:00
CYJiang
9651ff2c82 Reduce DRA PostFilter event noise 2026-07-04 14:51:33 +08:00
Antoni Basista
a84388789f Decouple WAP logic from scheduler struct 2026-07-03 14:07:11 +00:00
CYJiang
8d5731c016 scheduler: return in-memory preemption result 2026-07-03 10:53:21 +08:00
kubernetes-prow[bot]
7659de58e9
Merge pull request #140176 from weizhoublue/fix-dra-pending-allocation-nil-selector
Fix: prevent panic for pending allocations in DRA
2026-07-02 18:18:27 +00:00
weizhou blue
1abdaa5420
Fix: add nil guard before calling nodeaffinity.NewNodeSelector
Signed-off-by: weizhou blue <weizhou.lan@daocloud.io>
2026-07-02 23:06:44 +08:00
Maciej Skoczeń
0e2ac7a40f Cache and snapshot PodGroup API objects in kube-scheduler 2026-07-02 10:57:06 +00:00
dom4ha
24ac5b2bd7 api: rename PodGroupTemplateRef to WorkloadRef 2026-07-01 12:18:43 +00:00
kubernetes-prow[bot]
4189e1bead
Merge pull request #140075 from macsko/add_podgroup_object_to_podgroupinfo
Add PodGroup object to PodGroupInfo for scheduling cycle consistency
2026-07-01 12:00:29 +00:00
kubernetes-prow[bot]
66a10c0ac6
Merge pull request #140089 from nojnhuh/dra-pending-alloc-node-selector
DRA: Record node selector for shared pending allocations
2026-06-30 22:22:16 +00:00
kubernetes-prow[bot]
d6bd294106
Merge pull request #139763 from pravk03/ndf-ga
Promote Node Declared Features to GA
2026-06-30 20:52:24 +00:00
Ania Borowiec
d2842d8f03
Add PreemptionPolicy field to PodGroup 2026-06-30 16:48:10 +00:00
Maciej Skoczeń
aba5400ccf Add PodGroup object to PodGroupInfo for scheduling cycle consistency 2026-06-30 14:28:17 +00:00
Jon Huhn
2ff694e6d8 DRA: Record node selector for shared pending allocations
Co-authored-by: Troy Chiu <troychiu@users.noreply.github.com>
2026-06-29 22:45:17 -05:00
kubernetes-prow[bot]
96c35524cb
Merge pull request #139602 from nojnhuh/dra-podgroup-race
scheduler: Add resourceVersion to Pod status patch
2026-06-26 16:26:25 +00:00
Praveen Krishna
e81c394d30 Fix unit tests 2026-06-25 20:50:08 +00:00
Praveen Krishna
9251ae6e41 Add missing unit tests 2026-06-25 20:47:17 +00:00
kubernetes-prow[bot]
8c64324b69
Merge pull request #139880 from brejman/placement-feasible-status-update
Update PlacementFeasible statuses according to KEP
2026-06-22 10:23:44 +00:00
brejman
d62640f75a Update PlacementFeasible statuses according to KEP
Unschedulable -> Wait
UnschedulableAndUnresolvable -> Unschedulable

In the future, we can return UnschedulableAndUnresolvable if there's not
enough pods in the podgroup in total.
2026-06-22 09:12:56 +00:00
Kubernetes Prow Robot
5a50e0e229
Merge pull request #138497 from cupnes/kep-4049-beta
KEP-4049: Update tests for the StorageCapacityScoring feature for beta
2026-06-18 16:06:43 +05:30
Yuma Ogami
258b02d07e test: add StorageCapacityScoring=off variants to TestVolumeBinding 2026-06-18 08:40:36 +00:00
Antoni Basista
61dc7df681 Make minCount mutable in Workload and PodGroup APIs 2026-06-17 12:44:49 +00:00
Maciej Skoczeń
54ca619d4b Merge GangScheduling and WorkloadAwarePreemption feature gates into GenericWorkload 2026-06-15 11:42:10 +00:00
Jon Huhn
8f8e42a64e scheduler: Add resourceVersion to Pod status patch
When a Pod fails to asynchronously bind, a race occurs between the patch
to add the `PodScheduled=False` condition and a subsequent binding
attempt. If binding succeeds and adds `PodScheduled=True` before the
`PodScheduled=False` condition is set, then the last update persists
where the Pod is scheduled with a `spec.nodeName` but still has the
`PodScheduled=False` condition.

This change adds the `metadata.resourceVersion` of the Pod to patches so
these conflicts can be detected and handled appropriately.
2026-06-09 13:43:40 -05:00
yliao
f8e92a5b5e fixed unit tests errors: cannot set feature gate DRAExtendedResource to false, feature is locked to true 2026-06-02 16:12:22 +00:00
Kubernetes Prow Robot
9f192ba95a
Merge pull request #139418 from nojnhuh/dra-shared-pending-claim-accounting
DRA: Fix shared in-flight allocation accounting in error paths
2026-06-02 12:06:52 +05:30
Kubernetes Prow Robot
14f9f7e9e5
Merge pull request #139332 from johnahull/fix/dra-list-type-allocator-wiring
DRA: pass ListTypeAttributes to AllocatorFeatures
2026-06-02 01:57:06 +05:30
Jon Huhn
b276de1077 DRA: Fix shared in-flight allocation accounting in error paths
In the DRA scheduler plugin, `SignalClaimPendingAllocation` and
`MaybeRemoveClaimPendingAllocation` coordinate in-flight allocations for
claims shared between Pods when scheduling a PodGroup. `Signal` is
called in Reserve to store an in-flight allocation and mark a claim as
being shared. `MaybeRemove` is called in Unreserve to release a Pod's
share of the claim and remove the in-flight allocation if no more Pods
are sharing the claim. `MaybeRemove` is also called at the end of
PreBind so successful binding cycles remove the in-flight allocation in
favor of the allocation stored in the API.

When a Pod transiently fails in PreBind, `MaybeRemove` is invoked twice:
first in PreBind, and again in Unreserve. Since shares are tracked with
a counter, these double-counted releases can cause the in-flight claim
to be removed from the cache prematurely and poison the AssumeCache with
a claim that has both an updated resourceVersion and no allocation,
halting progress.

This change refactors the `MaybeRemove` call in PreBind to only fire
when PreBind has finished successfully. When Pods sharing a claim are
binding concurrently, each one will either:

- Update the claim's allocation successfully and force-remove the
  in-flight allocation, or
- Fail to bind and wait until Unreserve to call `MaybeRemove`
2026-06-01 13:29:39 -05:00
John Hull
6fb92ce4aa Pass ListTypeAttributes to AllocatorFeatures to enable experimental allocator
The DRAListTypeAttributes feature gate was enabled but not passed
through AllocatorFeatures(), so the scheduler always selected the
incubating allocator which doesn't support list-type attribute
intersection matching (KEP-5491). The experimental allocator has
the intersection logic but was never selected.
2026-05-29 10:30:03 -05:00
Kubernetes Prow Robot
df31649416
Merge pull request #139017 from johnbelamaric/fix-dra-scoring-bug
Fix dra scoring bug with mixed allocated and unallocated claims
2026-05-28 19:08:50 +05:30
Kubernetes Prow Robot
ae84ac1a16
Merge pull request #138274 from wtravO/wtravo/placement-cycle-state
Add PlacementCycleState to WAS scheduler framework
2026-05-28 16:28:48 +05:30
wtravO
b968273f03 Pass PlacementCycleState to PlacementFeasible plugins 2026-05-27 10:44:44 -04:00
wtravO
bd97e3f190 expose PodGroupCycleState via PlacementCycleState 2026-05-27 10:25:23 -04:00
Maciej Skoczeń
8eb66b73ef Add support for PodGroups in scheduling queue 2026-05-27 13:06:13 +00:00
Kubernetes Prow Robot
338e80805f
Merge pull request #138643 from brejman/gang-early-return-core
Add early-return based on mincount to pod group scheduling algorithm
2026-05-27 17:36:43 +05:30