Scheduler/plugins/nodelabel fix no label preference

This commit is contained in:
Shiming Zhang 2021-03-09 17:19:46 +08:00
parent bc13a38367
commit ab3a765570
2 changed files with 27 additions and 1 deletions

View File

@ -89,6 +89,12 @@ func (pl *NodeLabel) Filter(ctx context.Context, _ *framework.CycleState, pod *v
if node == nil {
return framework.NewStatus(framework.Error, "node not found")
}
size := int64(len(pl.args.PresentLabels) + len(pl.args.AbsentLabels))
if size == 0 {
return nil
}
nodeLabels := labels.Set(node.Labels)
check := func(labels []string, presence bool) bool {
for _, label := range labels {
@ -114,6 +120,15 @@ func (pl *NodeLabel) Score(ctx context.Context, state *framework.CycleState, pod
}
node := nodeInfo.Node()
if node == nil {
return 0, framework.NewStatus(framework.Error, "node not found")
}
size := int64(len(pl.args.PresentLabelsPreference) + len(pl.args.AbsentLabelsPreference))
if size == 0 {
return 0, nil
}
score := int64(0)
for _, label := range pl.args.PresentLabelsPreference {
if labels.Set(node.Labels).Has(label) {
@ -125,8 +140,9 @@ func (pl *NodeLabel) Score(ctx context.Context, state *framework.CycleState, pod
score += framework.MaxNodeScore
}
}
// Take average score for each label to ensure the score doesn't exceed MaxNodeScore.
score /= int64(len(pl.args.PresentLabelsPreference) + len(pl.args.AbsentLabelsPreference))
score /= size
return score, nil
}

View File

@ -110,6 +110,11 @@ func TestNodeLabelFilter(t *testing.T) {
},
res: framework.UnschedulableAndUnresolvable,
},
{
name: "no label",
args: config.NodeLabelArgs{},
res: framework.Success,
},
}
for _, test := range tests {
@ -231,6 +236,11 @@ func TestNodeLabelScore(t *testing.T) {
},
name: "two present labels one matches, two absent labels mismatch",
},
{
want: 0,
args: config.NodeLabelArgs{},
name: "no label preference",
},
}
for _, test := range tests {