Skip to content

Commit 288b044

Browse files
authored
Merge pull request kubernetes#131609 from googs1025/scheduler_AdmissionCheck
fix(scheduler): node pre-check logic to consider NoExecute taint effect
2 parents d2507bb + 6c89041 commit 288b044

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

pkg/scheduler/eventhandlers.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import (
3838
"k8s.io/kubernetes/pkg/features"
3939
"k8s.io/kubernetes/pkg/scheduler/backend/queue"
4040
"k8s.io/kubernetes/pkg/scheduler/framework"
41+
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/helper"
4142
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/nodeaffinity"
4243
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/nodename"
4344
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/nodeports"
@@ -635,9 +636,7 @@ func preCheckForNode(nodeInfo *framework.NodeInfo) queue.PreEnqueueCheck {
635636
if len(admissionResults) != 0 {
636637
return false
637638
}
638-
_, isUntolerated := corev1helpers.FindMatchingUntoleratedTaint(nodeInfo.Node().Spec.Taints, pod.Spec.Tolerations, func(t *v1.Taint) bool {
639-
return t.Effect == v1.TaintEffectNoSchedule
640-
})
639+
_, isUntolerated := corev1helpers.FindMatchingUntoleratedTaint(nodeInfo.Node().Spec.Taints, pod.Spec.Tolerations, helper.DoNotScheduleTaintsFilterFunc())
641640
return !isUntolerated
642641
}
643642
}

pkg/scheduler/eventhandlers_test.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,26 @@ func TestPreCheckForNode(t *testing.T) {
372372
},
373373
want: []bool{false, true, false, false},
374374
},
375+
{
376+
name: "tainted node with NoExecute effect, pods with tolerations",
377+
nodeFn: func() *v1.Node {
378+
node := st.MakeNode().Name("fake-node").Label("hostname", "fake-node").Capacity(cpu8).Obj()
379+
node.Spec.Taints = []v1.Taint{
380+
{Key: "foo", Effect: v1.TaintEffectPreferNoSchedule},
381+
{Key: "baz", Effect: v1.TaintEffectNoExecute},
382+
}
383+
return node
384+
},
385+
pods: []*v1.Pod{
386+
st.MakePod().Name("p1").Obj(),
387+
st.MakePod().Name("p2").Obj(),
388+
st.MakePod().Name("p3").Toleration("foo").Obj(),
389+
st.MakePod().Name("p4").Toleration("baz").Obj(),
390+
st.MakePod().Name("p5").Obj(),
391+
st.MakePod().Name("p6").Toleration("bar").Toleration("baz").Obj(),
392+
},
393+
want: []bool{false, false, false, true, false, true},
394+
},
375395
}
376396

377397
for _, tt := range tests {

0 commit comments

Comments
 (0)