Commit Graph

94 Commits

Author SHA1 Message Date
Maciej Skoczeń
3dfcda9afd Fix minor inconsistencies in scheduler 2025-09-10 11:40:10 +00:00
Ania Borowiec
fadb40199f Move interfaces: Handle and Plugin and related types from kubernetes/kubernetes to staging repo kube-scheduler 2025-09-02 09:42:53 +00:00
Ania Borowiec
aecd37e6fb Moving Scheduler interfaces to staging: Move PodInfo and NodeInfo interfaces (together with related types) to staging repo, leaving internal implementation in kubernetes/kubernetes/pkg/scheduler 2025-07-24 12:10:58 +00:00
Ania Borowiec
ee8c265d35 Move Code and Status from pkg/scheduler/framework to k8s.io/kube-scheduler/framework 2025-06-30 10:06:22 +00:00
Ania Borowiec
00d3750503 Move ClusterEvent type to staging repo, leaving some functions (that contain logic internal to scheduler) in kubernetes/kubernetes (#132190)
* Move ClusterEvent type to staging repo, leaving some functions (that contain logic internal to scheduler) in kubernetes/kubernetes

apply review comment and fix linter warning

* update-vendor.sh

* update doc comments

* run update-vendor.sh
2025-06-26 08:06:29 -07:00
Kubernetes Prow Robot
e0859f91b7 Merge pull request #131887 from ania-borowiec/extract_cyclestate_interface
Moving Scheduler interfaces to staging: split CycleState into interface and implementation, move interface to staging repo
2025-05-30 04:00:18 -07:00
Ania Borowiec
d75af825fb Extract interface CycleState and move is to staging repo. CycleState implementation remains in k/k/pkg/scheduler/framework 2025-05-29 16:18:36 +00:00
Kubernetes Prow Robot
0afe2b839d Merge pull request #129983 from nickbp/master
feature(scheduler): Customizable pod selection and ordering in DefaultPreemption plugin
2025-05-20 05:09:15 -07:00
Nicholas Parker
7bccb1acb5 Update pkg/scheduler/framework/plugins/defaultpreemption/default_preemption.go
Co-authored-by: Dominik Marciński <gmidon@gmail.com>
2025-05-16 13:12:13 +12:00
Nick Parker
a507e64fe4 Have separate tests for custom selection vs ordering, add comments around system pod eligibility 2025-05-13 06:56:27 +12:00
Nick Parker
283c5e6b61 Have IsEligiblePod be supplemental to priority check, update tests 2025-05-13 06:56:27 +12:00
Nick Parker
3ed73e058a Clean up the affinity explanation, fix for new lint rule 2025-05-13 06:56:27 +12:00
Nick Parker
d4bc527a7b Update comments: affinity info, default behavior, priority->importance 2025-05-13 06:56:27 +12:00
Nicholas Parker
95ebc2c10e Apply suggestions from code review
Co-authored-by: Dominik Marciński <gmidon@gmail.com>
2025-05-13 06:56:27 +12:00
Nick Parker
7f57c6e52d Update factory to use generics, keep single New function 2025-05-13 06:56:27 +12:00
Nick Parker
137da6a488 Remove line about equal priority, fix typo 2025-05-13 06:56:27 +12:00
Nicholas Parker
b8ac171437 Apply suggestions from code review
Co-authored-by: Dominik Marciński <gmidon@gmail.com>
2025-05-13 06:56:27 +12:00
Nick Parker
224e6a3a35 Rename EligiblePod* to IsEligiblePod* 2025-05-13 06:56:27 +12:00
Nick Parker
4bf6841495 Update the customizations to operate on individual pods, for more flexibility later 2025-05-13 06:56:27 +12:00
Nick Parker
c34f8db559 Remove unnecessary context and typecheck, switch to cmp.Diff 2025-05-13 06:56:27 +12:00
Nick Parker
78b059c064 rename OrderedPods -> OrderPods 2025-05-13 06:56:26 +12:00
Nick Parker
2616202ac9 Implement tests with example customizations, add direct constructor 2025-05-13 06:56:26 +12:00
Nick Parker
760daaf110 feature(scheduler): Custom pod selection/ordering in DefaultPreemption
The current behavior is to select only based on pod priority, where any
pod with higher priority can preempt any pod with lower priority.

In our case, we have multiple priority classes but where only a subset
of those are considered preemptible. Here's roughly how this looks:

- High priority: higher in the scheduling queue, not preemptible
- Low priority: lower in the scheduling queue, not preemptible
- Preemptible priority: lowest in the scheduling queue, preemptible

This PR allows the preemption selection to be configured against the
`DefaultPreemption` plugin, rather than needing to reimplement the
plugin itself. The structure used here mimics [what's currently being
done for the `Evaluator`](https://github.com/kubernetes/kubernetes/blob/release-1.32/pkg/scheduler/framework/preemption/preemption.go#L161-L165),
where a `PreemptPod` callback may be overridden to customize what
happens when performing a preemption.

This PR also updates the plugin's tests to call the updated `New()`
function rather than constructing `DefaultPreemption` directly, so
that `New()` is now being exercised in tests.
2025-05-13 06:56:26 +12:00
Kensei Nakada
47d296d62d feat: introduce pInfo.GatingPlugin to filter out events more generally 2025-05-07 13:54:47 +02:00
Jordan Liggitt
8090db5dcf Switch to private instances of rand for seeding for tests 2025-02-26 11:27:10 +01:00
Kensei Nakada
d4d91d4ace fix: use set methods 2024-11-07 14:09:35 +09:00
Kensei Nakada
677792663f fix: register Pod/Delete event at the preemption plugin 2024-11-07 14:09:35 +09:00
Kensei Nakada
fe3119fa69 make sure DefaultPreemption implements PreEnqueuePlugin 2024-11-07 14:09:35 +09:00
Kensei Nakada
69a8d0ec0b feature(KEP-4832): asynchronous preemption 2024-11-07 14:09:34 +09:00
NoicFank
68f7a7c682 bugfix(scheduler): preemption picks wrong victim node with higher priority pod on it.
Introducing pdb to preemption had disrupted the orderliness of pods in the victims,
which would leads picking wrong victim node with higher priority pod on it.
2024-10-29 19:50:55 +08:00
googs1025
fc0fcd0044 feat: add ctx param for PodEligibleToPreemptOthers 2024-08-14 20:06:05 +08:00
Kubernetes Prow Robot
ea1143efc7 Merge pull request #126022 from macsko/new_node_to_status_map_structure
Change structure of NodeToStatus map in scheduler
2024-08-13 21:02:55 -07:00
Maciej Skoczeń
98be7dfc5d Change structure of NodeToStatus map in scheduler 2024-07-25 07:48:35 +00:00
carlory
850bc09e9b clean up codes after PodDisruptionConditions was promoted to GA and locked to default 2024-07-11 10:40:21 +08:00
Ukri Niemimuukko
02b0dc98dd remove unnecessary fmt.Sprintf call
default_preemtion.go has an unnecessary fmt.Sprintf call which
triggers common code checkers. This removes it.

Signed-off-by: Ukri Niemimuukko <ukri.niemimuukko@intel.com>
2023-11-25 21:36:04 +02:00
lianghao208
34e620d18c Support score extension function in preemption. 2023-11-15 15:28:20 +08:00
Mengjiao Liu
b0a73213d6 kube-scheduler: convert the remaining part to use contextual logging 2023-10-24 17:56:48 +08:00
Mengjiao Liu
a7466f44e0 Change the scheduler plugins PluginFactory function to use context parameter to pass logger
- Migrated pkg/scheduler/framework/plugins/nodevolumelimits to use contextual logging
- Fix golangci-lint validation failed
- Check for plugins creation err
2023-09-20 17:49:54 +08:00
kerthcet
3d583398fe Avoid to build the error msg for twice
Signed-off-by: kerthcet <kerthcet@gmail.com>
2023-08-28 17:13:39 +08:00
Mengjiao Liu
37a9260d5c Migrate pkg/scheduler/framework/plugins/defaultpreemption/default_preemption.go to use contextual logging 2023-04-27 11:28:19 +08:00
mantuliu
ccde866a2f Improve the performance of method CandidatesToVictimsMap
Signed-off-by: mantuliu <240951888@qq.com>
2023-02-27 23:53:19 +08:00
Wei Huang
9b64025f36 rename 'PreemptionByKubeScheduler' to 'PreemptionByScheduler' 2023-01-05 10:31:57 -08:00
Wei Huang
91742e2393 Enhanced logic to identify eligible preemption node 2023-01-05 10:31:57 -08:00
Kante Yin
c8908716ee Make handling scheduleResult more readable
Signed-off-by: Kante Yin <kerthcet@gmail.com>
2022-12-22 01:22:34 +08:00
xiaomudk
5826cae547 clean: remove useless parentheses 2022-06-10 00:09:50 +08:00
cyclinder
6150737d11 remove feature gate GA for 1.25
Signed-off-by: cyclinder qifeng.guo@daocloud.io
2022-05-12 14:15:23 +08:00
Alex Wang
ddd62202fb make the preempt message per node compressible 2022-03-15 22:02:19 +08:00
Alex Wang
52275fc831 add preemption info in scheduling failed event 2022-02-01 00:37:16 +08:00
Jordan Liggitt
c0af728f43 Handle invalid selectors properly 2022-01-14 12:11:02 -05:00
Dave Chen
3af26bae2c Refactor defaultpreemption for out-of-tree plugins
Signed-off-by: Dave Chen <dave.chen@arm.com>
2021-08-11 09:29:17 +08:00