mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 20:24:09 +00:00
Merge pull request #80533 from alculquicondor/refactor/find_nodes
Query nodes in Schedule only when there are no predicates
This commit is contained in:
commit
aaad4c4afa
@ -195,11 +195,8 @@ func (g *genericScheduler) Schedule(pod *v1.Pod, nodeLister algorithm.NodeLister
|
|||||||
return result, prefilterStatus.AsError()
|
return result, prefilterStatus.AsError()
|
||||||
}
|
}
|
||||||
|
|
||||||
nodes := nodeLister.ListNodes()
|
numNodes := g.cache.NodeTree().NumNodes()
|
||||||
if err != nil {
|
if numNodes == 0 {
|
||||||
return result, err
|
|
||||||
}
|
|
||||||
if len(nodes) == 0 {
|
|
||||||
return result, ErrNoNodesAvailable
|
return result, ErrNoNodesAvailable
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -209,7 +206,7 @@ func (g *genericScheduler) Schedule(pod *v1.Pod, nodeLister algorithm.NodeLister
|
|||||||
|
|
||||||
trace.Step("Basic checks done")
|
trace.Step("Basic checks done")
|
||||||
startPredicateEvalTime := time.Now()
|
startPredicateEvalTime := time.Now()
|
||||||
filteredNodes, failedPredicateMap, err := g.findNodesThatFit(pluginContext, pod, nodes)
|
filteredNodes, failedPredicateMap, err := g.findNodesThatFit(pluginContext, pod, nodeLister)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return result, err
|
return result, err
|
||||||
}
|
}
|
||||||
@ -217,7 +214,7 @@ func (g *genericScheduler) Schedule(pod *v1.Pod, nodeLister algorithm.NodeLister
|
|||||||
if len(filteredNodes) == 0 {
|
if len(filteredNodes) == 0 {
|
||||||
return result, &FitError{
|
return result, &FitError{
|
||||||
Pod: pod,
|
Pod: pod,
|
||||||
NumAllNodes: len(nodes),
|
NumAllNodes: numNodes,
|
||||||
FailedPredicates: failedPredicateMap,
|
FailedPredicates: failedPredicateMap,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -452,12 +449,12 @@ func (g *genericScheduler) numFeasibleNodesToFind(numAllNodes int32) (numNodes i
|
|||||||
|
|
||||||
// Filters the nodes to find the ones that fit based on the given predicate functions
|
// Filters the nodes to find the ones that fit based on the given predicate functions
|
||||||
// Each node is passed through the predicate functions to determine if it is a fit
|
// Each node is passed through the predicate functions to determine if it is a fit
|
||||||
func (g *genericScheduler) findNodesThatFit(pluginContext *framework.PluginContext, pod *v1.Pod, nodes []*v1.Node) ([]*v1.Node, FailedPredicateMap, error) {
|
func (g *genericScheduler) findNodesThatFit(pluginContext *framework.PluginContext, pod *v1.Pod, nodeLister algorithm.NodeLister) ([]*v1.Node, FailedPredicateMap, error) {
|
||||||
var filtered []*v1.Node
|
var filtered []*v1.Node
|
||||||
failedPredicateMap := FailedPredicateMap{}
|
failedPredicateMap := FailedPredicateMap{}
|
||||||
|
|
||||||
if len(g.predicates) == 0 {
|
if len(g.predicates) == 0 {
|
||||||
filtered = nodes
|
filtered = nodeLister.ListNodes()
|
||||||
} else {
|
} else {
|
||||||
allNodes := int32(g.cache.NodeTree().NumNodes())
|
allNodes := int32(g.cache.NodeTree().NumNodes())
|
||||||
numNodesToFind := g.numFeasibleNodesToFind(allNodes)
|
numNodesToFind := g.numFeasibleNodesToFind(allNodes)
|
||||||
|
@ -613,7 +613,7 @@ func TestFindFitAllError(t *testing.T) {
|
|||||||
nodes := makeNodeList([]string{"3", "2", "1"})
|
nodes := makeNodeList([]string{"3", "2", "1"})
|
||||||
scheduler := makeScheduler(predicates, nodes)
|
scheduler := makeScheduler(predicates, nodes)
|
||||||
|
|
||||||
_, predicateMap, err := scheduler.findNodesThatFit(nil, &v1.Pod{}, nodes)
|
_, predicateMap, err := scheduler.findNodesThatFit(nil, &v1.Pod{}, schedulertesting.FakeNodeLister(nodes))
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
@ -643,7 +643,7 @@ func TestFindFitSomeError(t *testing.T) {
|
|||||||
scheduler := makeScheduler(predicates, nodes)
|
scheduler := makeScheduler(predicates, nodes)
|
||||||
|
|
||||||
pod := &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "1", UID: types.UID("1")}}
|
pod := &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "1", UID: types.UID("1")}}
|
||||||
_, predicateMap, err := scheduler.findNodesThatFit(nil, pod, nodes)
|
_, predicateMap, err := scheduler.findNodesThatFit(nil, pod, schedulertesting.FakeNodeLister(nodes))
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
|
Loading…
Reference in New Issue
Block a user