Skip to content

Commit 2ee46df

Browse files
authored
Merge pull request kubernetes#86599 from denkensk/move-nodepreferavoidpods-scoreplugin
move nodepreferavoidpods to score plugin
2 parents 6c1080b + e5168cc commit 2ee46df

File tree

7 files changed

+34
-236
lines changed

7 files changed

+34
-236
lines changed

pkg/scheduler/algorithm/priorities/BUILD

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ go_library(
1414
"least_requested.go",
1515
"metadata.go",
1616
"most_requested.go",
17-
"node_prefer_avoid_pods.go",
1817
"priorities.go",
1918
"reduce.go",
2019
"requested_to_capacity_ratio.go",
@@ -54,7 +53,6 @@ go_test(
5453
"least_requested_test.go",
5554
"metadata_test.go",
5655
"most_requested_test.go",
57-
"node_prefer_avoid_pods_test.go",
5856
"requested_to_capacity_ratio_test.go",
5957
"resource_limits_test.go",
6058
"selector_spreading_test.go",

pkg/scheduler/algorithm/priorities/metadata.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ func NewMetadataFactory(
5858
type priorityMetadata struct {
5959
podLimits *schedulernodeinfo.Resource
6060
podSelector labels.Selector
61-
controllerRef *metav1.OwnerReference
6261
podFirstServiceSelector labels.Selector
6362
podTopologySpreadMap *podTopologySpreadMap
6463
}
@@ -87,7 +86,6 @@ func (pmf *MetadataFactory) PriorityMetadata(
8786
return &priorityMetadata{
8887
podLimits: getResourceLimits(pod),
8988
podSelector: getSelector(pod, pmf.serviceLister, pmf.controllerLister, pmf.replicaSetLister, pmf.statefulSetLister),
90-
controllerRef: metav1.GetControllerOf(pod),
9189
podFirstServiceSelector: getFirstServiceSelector(pod, pmf.serviceLister),
9290
podTopologySpreadMap: tpSpreadMap,
9391
}

pkg/scheduler/algorithm/priorities/node_prefer_avoid_pods.go

Lines changed: 0 additions & 67 deletions
This file was deleted.

pkg/scheduler/algorithm/priorities/node_prefer_avoid_pods_test.go

Lines changed: 0 additions & 157 deletions
This file was deleted.

pkg/scheduler/algorithmprovider/defaults/register_priorities.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ func init() {
8080

8181
// Set this weight large enough to override all other priority functions.
8282
// TODO: Figure out a better way to do this, maybe at same time as fixing #24720.
83-
scheduler.RegisterPriorityMapReduceFunction(priorities.NodePreferAvoidPodsPriority, priorities.CalculateNodePreferAvoidPodsPriorityMap, nil, 10000)
83+
scheduler.RegisterPriorityMapReduceFunction(priorities.NodePreferAvoidPodsPriority, nil, nil, 10000)
8484

8585
// Prioritizes nodes that have labels matching NodeAffinity
8686
scheduler.RegisterPriorityMapReduceFunction(priorities.NodeAffinityPriority, nil, nil, 1)

pkg/scheduler/framework/plugins/nodepreferavoidpods/BUILD

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ go_library(
66
importpath = "k8s.io/kubernetes/pkg/scheduler/framework/plugins/nodepreferavoidpods",
77
visibility = ["//visibility:public"],
88
deps = [
9-
"//pkg/scheduler/algorithm/priorities:go_default_library",
10-
"//pkg/scheduler/framework/plugins/migration:go_default_library",
9+
"//pkg/apis/core/v1/helper:go_default_library",
1110
"//pkg/scheduler/framework/v1alpha1:go_default_library",
1211
"//staging/src/k8s.io/api/core/v1:go_default_library",
12+
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
1313
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
1414
],
1515
)

pkg/scheduler/framework/plugins/nodepreferavoidpods/node_prefer_avoid_pods.go

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ import (
2121
"fmt"
2222

2323
v1 "k8s.io/api/core/v1"
24+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2425
"k8s.io/apimachinery/pkg/runtime"
25-
"k8s.io/kubernetes/pkg/scheduler/algorithm/priorities"
26-
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/migration"
26+
v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
2727
framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
2828
)
2929

@@ -50,9 +50,35 @@ func (pl *NodePreferAvoidPods) Score(ctx context.Context, state *framework.Cycle
5050
return 0, framework.NewStatus(framework.Error, fmt.Sprintf("getting node %q from Snapshot: %v", nodeName, err))
5151
}
5252

53-
meta := migration.PriorityMetadata(state)
54-
s, err := priorities.CalculateNodePreferAvoidPodsPriorityMap(pod, meta, nodeInfo)
55-
return s.Score, migration.ErrorToFrameworkStatus(err)
53+
node := nodeInfo.Node()
54+
if node == nil {
55+
return 0, framework.NewStatus(framework.Error, "node not found")
56+
}
57+
58+
controllerRef := metav1.GetControllerOf(pod)
59+
if controllerRef != nil {
60+
// Ignore pods that are owned by other controller than ReplicationController
61+
// or ReplicaSet.
62+
if controllerRef.Kind != "ReplicationController" && controllerRef.Kind != "ReplicaSet" {
63+
controllerRef = nil
64+
}
65+
}
66+
if controllerRef == nil {
67+
return framework.MaxNodeScore, nil
68+
}
69+
70+
avoids, err := v1helper.GetAvoidPodsFromNodeAnnotations(node.Annotations)
71+
if err != nil {
72+
// If we cannot get annotation, assume it's schedulable there.
73+
return framework.MaxNodeScore, nil
74+
}
75+
for i := range avoids.PreferAvoidPods {
76+
avoid := &avoids.PreferAvoidPods[i]
77+
if avoid.PodSignature.PodController.Kind == controllerRef.Kind && avoid.PodSignature.PodController.UID == controllerRef.UID {
78+
return 0, nil
79+
}
80+
}
81+
return framework.MaxNodeScore, nil
5682
}
5783

5884
// ScoreExtensions of the Score plugin.

0 commit comments

Comments
 (0)