diff --git a/pkg/scheduler/framework/plugins/noderesources/least_allocated.go b/pkg/scheduler/framework/plugins/noderesources/least_allocated.go index 5257a2ad20f..e9ce2c41100 100644 --- a/pkg/scheduler/framework/plugins/noderesources/least_allocated.go +++ b/pkg/scheduler/framework/plugins/noderesources/least_allocated.go @@ -97,6 +97,9 @@ func leastResourceScorer(resToWeightMap resourceToWeightMap) func(resourceToValu nodeScore += resourceScore * weight weightSum += weight } + if weightSum == 0 { + return 0 + } return nodeScore / weightSum } } diff --git a/pkg/scheduler/framework/plugins/noderesources/least_allocated_test.go b/pkg/scheduler/framework/plugins/noderesources/least_allocated_test.go index 752877ed755..0543d1c9bae 100644 --- a/pkg/scheduler/framework/plugins/noderesources/least_allocated_test.go +++ b/pkg/scheduler/framework/plugins/noderesources/least_allocated_test.go @@ -138,6 +138,13 @@ func TestNodeResourcesLeastAllocated(t *testing.T) { expectedList: []framework.NodeScore{{Name: "machine1", Score: 37}, {Name: "machine2", Score: 50}}, name: "nothing scheduled, resources requested, differently sized machines", }, + { + pod: &v1.Pod{Spec: cpuAndMemory}, + nodes: []*v1.Node{makeNode("machine1", 4000, 10000), makeNode("machine2", 6000, 10000)}, + args: config.NodeResourcesLeastAllocatedArgs{Resources: []config.ResourceSpec{}}, + expectedList: []framework.NodeScore{{Name: "machine1", Score: 0}, {Name: "machine2", Score: 0}}, + name: "Resources not set, nothing scheduled, resources requested, differently sized machines", + }, { // Node1 scores on 0-MaxNodeScore scale // CPU Score: ((4000 - 0) * MaxNodeScore) / 4000 = MaxNodeScore diff --git a/pkg/scheduler/framework/plugins/noderesources/most_allocated.go b/pkg/scheduler/framework/plugins/noderesources/most_allocated.go index 010643c1145..8e45b5d2118 100644 --- a/pkg/scheduler/framework/plugins/noderesources/most_allocated.go +++ b/pkg/scheduler/framework/plugins/noderesources/most_allocated.go @@ -95,6 +95,9 @@ func mostResourceScorer(resToWeightMap resourceToWeightMap) func(requested, allo nodeScore += resourceScore * weight weightSum += weight } + if weightSum == 0 { + return 0 + } return (nodeScore / weightSum) } } diff --git a/pkg/scheduler/framework/plugins/noderesources/most_allocated_test.go b/pkg/scheduler/framework/plugins/noderesources/most_allocated_test.go index 0cf1d97352c..c341dfcede8 100644 --- a/pkg/scheduler/framework/plugins/noderesources/most_allocated_test.go +++ b/pkg/scheduler/framework/plugins/noderesources/most_allocated_test.go @@ -153,6 +153,13 @@ func TestNodeResourcesMostAllocated(t *testing.T) { expectedList: []framework.NodeScore{{Name: "machine1", Score: 62}, {Name: "machine2", Score: 50}}, name: "nothing scheduled, resources requested, differently sized machines", }, + { + pod: &v1.Pod{Spec: cpuAndMemory}, + nodes: []*v1.Node{makeNode("machine1", 4000, 10000), makeNode("machine2", 6000, 10000)}, + args: config.NodeResourcesMostAllocatedArgs{Resources: []config.ResourceSpec{}}, + expectedList: []framework.NodeScore{{Name: "machine1", Score: 0}, {Name: "machine2", Score: 0}}, + name: "Resources not set, nothing scheduled, resources requested, differently sized machines", + }, { // Node1 scores on 0-MaxNodeScore scale // CPU Score: (6000 * MaxNodeScore) / 10000 = 60