diff --git a/pkg/scheduler/framework/plugins/podtopologyspread/scoring.go b/pkg/scheduler/framework/plugins/podtopologyspread/scoring.go index 5bc938f028e..34181560bba 100644 --- a/pkg/scheduler/framework/plugins/podtopologyspread/scoring.go +++ b/pkg/scheduler/framework/plugins/podtopologyspread/scoring.go @@ -209,7 +209,7 @@ func (pl *PodTopologySpread) Score(ctx context.Context, cycleState *framework.Cy score += scoreForCount(cnt, c.MaxSkew, s.TopologyNormalizingWeight[i]) } } - return int64(score), nil + return int64(math.Round(score)), nil } // NormalizeScore invoked after scoring all nodes. diff --git a/pkg/scheduler/framework/plugins/podtopologyspread/scoring_test.go b/pkg/scheduler/framework/plugins/podtopologyspread/scoring_test.go index fe5f9cbabe1..0813ae28957 100644 --- a/pkg/scheduler/framework/plugins/podtopologyspread/scoring_test.go +++ b/pkg/scheduler/framework/plugins/podtopologyspread/scoring_test.go @@ -22,7 +22,7 @@ import ( "github.com/google/go-cmp/cmp" appsv1 "k8s.io/api/apps/v1" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/util/sets" @@ -367,8 +367,8 @@ func TestPodTopologySpreadScore(t *testing.T) { }, failedNodes: []*v1.Node{}, want: []framework.NodeScore{ - {Name: "node-a", Score: 40}, - {Name: "node-b", Score: 80}, + {Name: "node-a", Score: 20}, + {Name: "node-b", Score: 60}, {Name: "node-c", Score: 100}, {Name: "node-d", Score: 0}, }, @@ -395,8 +395,8 @@ func TestPodTopologySpreadScore(t *testing.T) { }, failedNodes: []*v1.Node{}, want: []framework.NodeScore{ - {Name: "node-a", Score: 50}, // +10, compared to maxSkew=1 - {Name: "node-b", Score: 83}, // +3, compared to maxSkew=1 + {Name: "node-a", Score: 33}, // +13, compared to maxSkew=1 + {Name: "node-b", Score: 66}, // +6, compared to maxSkew=1 {Name: "node-c", Score: 100}, {Name: "node-d", Score: 16}, // +16, compared to maxSkew=1 }, @@ -427,8 +427,8 @@ func TestPodTopologySpreadScore(t *testing.T) { }, failedNodes: []*v1.Node{}, want: []framework.NodeScore{ - {Name: "node-a", Score: 33}, // +19 compared to maxSkew=1 - {Name: "node-b", Score: 55}, // +13 compared to maxSkew=1 + {Name: "node-a", Score: 44}, // +16 compared to maxSkew=1 + {Name: "node-b", Score: 66}, // +9 compared to maxSkew=1 {Name: "node-c", Score: 77}, // +6 compared to maxSkew=1 {Name: "node-d", Score: 100}, }, @@ -461,8 +461,8 @@ func TestPodTopologySpreadScore(t *testing.T) { }, want: []framework.NodeScore{ // Same scores as if we were using one spreading constraint. - {Name: "node-a", Score: 33}, - {Name: "node-b", Score: 55}, + {Name: "node-a", Score: 44}, + {Name: "node-b", Score: 66}, {Name: "node-c", Score: 77}, {Name: "node-d", Score: 100}, }, @@ -494,8 +494,8 @@ func TestPodTopologySpreadScore(t *testing.T) { st.MakeNode().Name("node-y").Label(v1.LabelHostname, "node-y").Obj(), }, want: []framework.NodeScore{ - {Name: "node-a", Score: 16}, - {Name: "node-b", Score: 66}, + {Name: "node-a", Score: 33}, + {Name: "node-b", Score: 83}, {Name: "node-x", Score: 100}, }, }, @@ -526,7 +526,7 @@ func TestPodTopologySpreadScore(t *testing.T) { st.MakeNode().Name("node-y").Label(v1.LabelHostname, "node-y").Obj(), }, want: []framework.NodeScore{ - {Name: "node-a", Score: 20}, + {Name: "node-a", Score: 16}, {Name: "node-b", Score: 0}, {Name: "node-x", Score: 100}, }, @@ -558,8 +558,8 @@ func TestPodTopologySpreadScore(t *testing.T) { st.MakeNode().Name("node-y").Label("zone", "zone2").Label(v1.LabelHostname, "node-y").Obj(), }, want: []framework.NodeScore{ - {Name: "node-a", Score: 62}, - {Name: "node-b", Score: 62}, + {Name: "node-a", Score: 75}, + {Name: "node-b", Score: 75}, {Name: "node-x", Score: 100}, }, }, @@ -591,7 +591,7 @@ func TestPodTopologySpreadScore(t *testing.T) { }, want: []framework.NodeScore{ {Name: "node-a", Score: 100}, - {Name: "node-x", Score: 54}, + {Name: "node-x", Score: 63}, }, }, { @@ -624,10 +624,10 @@ func TestPodTopologySpreadScore(t *testing.T) { }, failedNodes: []*v1.Node{}, want: []framework.NodeScore{ - {Name: "node-a", Score: 75}, - {Name: "node-b", Score: 25}, + {Name: "node-a", Score: 60}, + {Name: "node-b", Score: 20}, {Name: "node-x", Score: 100}, - {Name: "node-y", Score: 50}, + {Name: "node-y", Score: 60}, }, }, { @@ -652,8 +652,8 @@ func TestPodTopologySpreadScore(t *testing.T) { failedNodes: []*v1.Node{}, want: []framework.NodeScore{ {Name: "node-a", Score: 100}, - {Name: "node-b", Score: 75}, - {Name: "node-x", Score: 50}, + {Name: "node-b", Score: 60}, + {Name: "node-x", Score: 40}, {Name: "node-y", Score: 0}, }, }, @@ -680,7 +680,7 @@ func TestPodTopologySpreadScore(t *testing.T) { st.MakeNode().Name("node-y").Label("zone", "zone2").Label(v1.LabelHostname, "node-y").Obj(), }, want: []framework.NodeScore{ - {Name: "node-a", Score: 75}, + {Name: "node-a", Score: 50}, {Name: "node-b", Score: 25}, {Name: "node-x", Score: 100}, }, @@ -702,7 +702,7 @@ func TestPodTopologySpreadScore(t *testing.T) { }, want: []framework.NodeScore{ {Name: "node-a", Score: 100}, - {Name: "node-b", Score: 50}, + {Name: "node-b", Score: 33}, }, }, {