diff --git a/pkg/scheduler/framework/plugins/noderesources/fit.go b/pkg/scheduler/framework/plugins/noderesources/fit.go index 4c118f5a189..28c4dc0920b 100644 --- a/pkg/scheduler/framework/plugins/noderesources/fit.go +++ b/pkg/scheduler/framework/plugins/noderesources/fit.go @@ -35,6 +35,7 @@ import ( var _ framework.PreFilterPlugin = &Fit{} var _ framework.FilterPlugin = &Fit{} +var _ framework.EnqueueExtensions = &Fit{} const ( // FitName is the name of the plugin used in the plugin registry and configurations. @@ -189,6 +190,18 @@ func getPreFilterState(cycleState *framework.CycleState) (*preFilterState, error return s, nil } +// EventsToRegister returns the possible events that may make a Pod +// failed by this plugin schedulable. +// NOTE: if in-place-update (KEP 1287) gets implemented, then PodUpdate event +// should be registered for this plugin since a Pod update may free up resources +// that make other Pods schedulable. +func (f *Fit) EventsToRegister() []framework.ClusterEvent { + return []framework.ClusterEvent{ + {Resource: framework.Pod, ActionType: framework.Delete}, + {Resource: framework.Node, ActionType: framework.Add | framework.UpdateNodeAllocatable}, + } +} + // Filter invoked at the filter extension point. // Checks if a node has sufficient resources, such as cpu, memory, gpu, opaque int resources etc to run a pod. // It returns a list of insufficient resources, if empty, then the node has all the resources requested by the pod.