mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
Scheduler/plugins/nodelabel fix no label preference
This commit is contained in:
parent
bc13a38367
commit
ab3a765570
@ -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
|
||||
}
|
||||
|
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user