mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-07-18 04:54:54 +00:00
Merge pull request #131609 from googs1025/scheduler_AdmissionCheck
fix(scheduler): node pre-check logic to consider NoExecute taint effect
This commit is contained in:
@@ -38,6 +38,7 @@ import (
|
||||
"k8s.io/kubernetes/pkg/features"
|
||||
"k8s.io/kubernetes/pkg/scheduler/backend/queue"
|
||||
"k8s.io/kubernetes/pkg/scheduler/framework"
|
||||
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/helper"
|
||||
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/nodeaffinity"
|
||||
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/nodename"
|
||||
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/nodeports"
|
||||
@@ -635,9 +636,7 @@ func preCheckForNode(nodeInfo *framework.NodeInfo) queue.PreEnqueueCheck {
|
||||
if len(admissionResults) != 0 {
|
||||
return false
|
||||
}
|
||||
_, isUntolerated := corev1helpers.FindMatchingUntoleratedTaint(nodeInfo.Node().Spec.Taints, pod.Spec.Tolerations, func(t *v1.Taint) bool {
|
||||
return t.Effect == v1.TaintEffectNoSchedule
|
||||
})
|
||||
_, isUntolerated := corev1helpers.FindMatchingUntoleratedTaint(nodeInfo.Node().Spec.Taints, pod.Spec.Tolerations, helper.DoNotScheduleTaintsFilterFunc())
|
||||
return !isUntolerated
|
||||
}
|
||||
}
|
||||
|
||||
@@ -372,6 +372,26 @@ func TestPreCheckForNode(t *testing.T) {
|
||||
},
|
||||
want: []bool{false, true, false, false},
|
||||
},
|
||||
{
|
||||
name: "tainted node with NoExecute effect, pods with tolerations",
|
||||
nodeFn: func() *v1.Node {
|
||||
node := st.MakeNode().Name("fake-node").Label("hostname", "fake-node").Capacity(cpu8).Obj()
|
||||
node.Spec.Taints = []v1.Taint{
|
||||
{Key: "foo", Effect: v1.TaintEffectPreferNoSchedule},
|
||||
{Key: "baz", Effect: v1.TaintEffectNoExecute},
|
||||
}
|
||||
return node
|
||||
},
|
||||
pods: []*v1.Pod{
|
||||
st.MakePod().Name("p1").Obj(),
|
||||
st.MakePod().Name("p2").Obj(),
|
||||
st.MakePod().Name("p3").Toleration("foo").Obj(),
|
||||
st.MakePod().Name("p4").Toleration("baz").Obj(),
|
||||
st.MakePod().Name("p5").Obj(),
|
||||
st.MakePod().Name("p6").Toleration("bar").Toleration("baz").Obj(),
|
||||
},
|
||||
want: []bool{false, false, false, true, false, true},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
|
||||
Reference in New Issue
Block a user