mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 04:06:03 +00:00
Merge pull request #91099 from snowplayfire/skip_unnecessary_scheduling
skip unnecessary scheduling attempt when pod has its Finalizers updated
This commit is contained in:
commit
52ae8b1ebb
@ -306,7 +306,7 @@ func responsibleForPod(pod *v1.Pod, profiles profile.Map) bool {
|
||||
// skipPodUpdate checks whether the specified pod update should be ignored.
|
||||
// This function will return true if
|
||||
// - The pod has already been assumed, AND
|
||||
// - The pod has only its ResourceVersion, Spec.NodeName and/or Annotations
|
||||
// - The pod has only its ResourceVersion, Spec.NodeName, Annotations, ManagedFields and/or Finalizers
|
||||
// updated.
|
||||
func (sched *Scheduler) skipPodUpdate(pod *v1.Pod) bool {
|
||||
// Non-assumed pods should never be skipped.
|
||||
@ -343,6 +343,8 @@ func (sched *Scheduler) skipPodUpdate(pod *v1.Pod) bool {
|
||||
// Same as above, when annotations are modified with ServerSideApply,
|
||||
// ManagedFields may also change and must be excluded
|
||||
p.ManagedFields = nil
|
||||
// Finalizers must be excluded because scheduled result can not be affected
|
||||
p.Finalizers = nil
|
||||
return p
|
||||
}
|
||||
assumedPodCopy, podCopy := f(assumedPod), f(pod)
|
||||
|
@ -183,6 +183,27 @@ func TestSkipPodUpdate(t *testing.T) {
|
||||
},
|
||||
expected: false,
|
||||
},
|
||||
{
|
||||
name: "with changes on Finalizers",
|
||||
pod: &v1.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "pod-0",
|
||||
Finalizers: []string{"a", "b"},
|
||||
},
|
||||
},
|
||||
isAssumedPodFunc: func(*v1.Pod) bool {
|
||||
return true
|
||||
},
|
||||
getPodFunc: func(*v1.Pod) *v1.Pod {
|
||||
return &v1.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "pod-0",
|
||||
Finalizers: []string{"c", "d"},
|
||||
},
|
||||
}
|
||||
},
|
||||
expected: true,
|
||||
},
|
||||
} {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
c := &Scheduler{
|
||||
|
Loading…
Reference in New Issue
Block a user