kubernetes/pkg/scheduler
Patrick Ohly 4e73634b53 scheduler: start scheduling attempt with clean UnschedulablePlugins
When some plugin was registered as "unschedulable" in some previous scheduling
attempt, it kept that attribute for a pod forever. When that plugin then later
failed with an error that requires backoff, the pod was incorrectly moved to the
"unschedulable" queue where it got stuck until the periodic flushing because
there was no event that the plugin was waiting for.

Here's an example where that happened:

     framework.go:1280: E0831 20:03:47.184243] Reserve/DynamicResources: Plugin failed err="Operation cannot be fulfilled on podschedulingcontexts.resource.k8s.io \"test-dragxd5c\": the object has been modified; please apply your changes to the latest version and try again" node="scheduler-perf-dra-7l2v2" plugin="DynamicResources" pod="test/test-dragxd5c"
    schedule_one.go:1001: E0831 20:03:47.184345] Error scheduling pod; retrying err="running Reserve plugin \"DynamicResources\": Operation cannot be fulfilled on podschedulingcontexts.resource.k8s.io \"test-dragxd5c\": the object has been modified; please apply your changes to the latest version and try again" pod="test/test-dragxd5c"
    ...
    scheduling_queue.go:745: I0831 20:03:47.198968] Pod moved to an internal scheduling queue pod="test/test-dragxd5c" event="ScheduleAttemptFailure" queue="Unschedulable" schedulingCycle=9576 hint="QueueSkip"

Pop still needs the information about unschedulable plugins to update the
UnschedulableReason metric. It can reset that information before returning the
PodInfo for the next scheduling attempt.
2023-09-08 16:52:36 +02:00
..
apis/config scheduler: remove unused constant SchedulerPolicyConfigMapKey 2023-09-04 17:48:36 +08:00
framework Merge pull request #117720 from kerthcet/feat/remove-selector-spread 2023-08-29 00:25:22 -07:00
internal scheduler: start scheduling attempt with clean UnschedulablePlugins 2023-09-08 16:52:36 +02:00
metrics Add Pod Scheduling SLI Duration metric (#119049) 2023-08-15 15:17:41 -07:00
profile kube-scheduler: NewFramework function to pass the context parameter 2023-05-23 10:17:34 +08:00
testing api: introduce separate VolumeResourceRequirements struct 2023-08-21 15:31:28 +02:00
util scheduler util: handle cache.DeletedFinalStateUnknown in As 2023-07-12 11:07:59 +02:00
eventhandlers.go wait for eventhandlers to sync before run scheduler 2023-06-27 23:19:34 +08:00
eventhandlers_test.go wait for eventhandlers to sync before run scheduler 2023-06-27 23:19:34 +08:00
extender.go Use the generic Set in scheduler 2023-04-09 11:34:17 +05:30
extender_test.go scheduler: update the scheduler interface and cache methods to use contextual logging 2023-05-29 13:26:32 +08:00
OWNERS Check in OWNERS modified by update-yamlfmt.sh 2021-12-09 21:31:26 -05:00
schedule_one.go Merge pull request #119785 from sanposhiho/waitonpermit-fiterror 2023-08-15 23:13:04 -07:00
schedule_one_test.go Remove deprecated selectorSpread 2023-08-28 22:11:33 +08:00
scheduler.go Trim managedFields in pod informer 2023-08-20 13:09:15 +00:00
scheduler_test.go implement SchedulerQueueingHints feature gate 2023-07-14 12:31:27 +00:00