Skip to content

Commit 04d71d8

Browse files
authored
Merge pull request kubernetes#86614 from ahg-g/ahg1-default2
Deprecate scheduler predicate and priority factory registration and associated types
2 parents 132d9e2 + 2b3df35 commit 04d71d8

File tree

16 files changed

+239
-1051
lines changed

16 files changed

+239
-1051
lines changed

pkg/scheduler/BUILD

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,6 @@ go_test(
110110
"//staging/src/k8s.io/client-go/testing:go_default_library",
111111
"//staging/src/k8s.io/client-go/tools/cache:go_default_library",
112112
"//staging/src/k8s.io/client-go/tools/events:go_default_library",
113-
"//vendor/github.com/google/go-cmp/cmp:go_default_library",
114113
"//vendor/github.com/stretchr/testify/assert:go_default_library",
115114
],
116115
)

pkg/scheduler/algorithm_factory.go

Lines changed: 133 additions & 314 deletions
Large diffs are not rendered by default.

pkg/scheduler/algorithmprovider/defaults/BUILD

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,12 @@ go_library(
1010
name = "go_default_library",
1111
srcs = [
1212
"defaults.go",
13-
"register_predicates.go",
1413
"register_priorities.go",
1514
],
1615
importpath = "k8s.io/kubernetes/pkg/scheduler/algorithmprovider/defaults",
1716
deps = [
1817
"//pkg/features:go_default_library",
1918
"//pkg/scheduler:go_default_library",
20-
"//pkg/scheduler/algorithm:go_default_library",
2119
"//pkg/scheduler/algorithm/predicates:go_default_library",
2220
"//pkg/scheduler/algorithm/priorities:go_default_library",
2321
"//pkg/scheduler/apis/config:go_default_library",

pkg/scheduler/algorithmprovider/defaults/defaults.go

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -66,24 +66,19 @@ func ApplyFeatureGates() (restore func()) {
6666
if utilfeature.DefaultFeatureGate.Enabled(features.EvenPodsSpread) {
6767
klog.Infof("Registering EvenPodsSpread predicate and priority function")
6868
// register predicate
69-
scheduler.InsertPredicateKeyToAlgorithmProviderMap(predicates.EvenPodsSpreadPred)
70-
scheduler.RegisterFitPredicate(predicates.EvenPodsSpreadPred, predicates.EvenPodsSpreadPredicate)
69+
scheduler.AddPredicateToAlgorithmProviders(predicates.EvenPodsSpreadPred)
70+
scheduler.RegisterPredicate(predicates.EvenPodsSpreadPred)
7171
// register priority
72-
scheduler.InsertPriorityKeyToAlgorithmProviderMap(priorities.EvenPodsSpreadPriority)
73-
scheduler.RegisterPriorityMapReduceFunction(
74-
priorities.EvenPodsSpreadPriority,
75-
priorities.CalculateEvenPodsSpreadPriorityMap,
76-
priorities.CalculateEvenPodsSpreadPriorityReduce,
77-
1,
78-
)
72+
scheduler.AddPriorityToAlgorithmProviders(priorities.EvenPodsSpreadPriority)
73+
scheduler.RegisterPriority(priorities.EvenPodsSpreadPriority, 1)
7974
}
8075

8176
// Prioritizes nodes that satisfy pod's resource limits
8277
if utilfeature.DefaultFeatureGate.Enabled(features.ResourceLimitsPriorityFunction) {
8378
klog.Infof("Registering resourcelimits priority function")
84-
scheduler.RegisterPriorityMapReduceFunction(priorities.ResourceLimitsPriority, nil, nil, 1)
79+
scheduler.RegisterPriority(priorities.ResourceLimitsPriority, 1)
8580
// Register the priority function to specific provider too.
86-
scheduler.InsertPriorityKeyToAlgorithmProviderMap(scheduler.RegisterPriorityMapReduceFunction(priorities.ResourceLimitsPriority, nil, nil, 1))
81+
scheduler.AddPriorityToAlgorithmProviders(priorities.ResourceLimitsPriority)
8782
}
8883

8984
restore = func() {

pkg/scheduler/algorithmprovider/defaults/register_predicates.go

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

pkg/scheduler/algorithmprovider/defaults/register_priorities.go

Lines changed: 0 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ package defaults
1818

1919
import (
2020
"k8s.io/kubernetes/pkg/scheduler"
21-
"k8s.io/kubernetes/pkg/scheduler/algorithm"
2221
"k8s.io/kubernetes/pkg/scheduler/algorithm/priorities"
2322
)
2423

@@ -32,62 +31,4 @@ func init() {
3231
statefulSetLister := args.InformerFactory.Apps().V1().StatefulSets().Lister()
3332
return priorities.NewMetadataFactory(serviceLister, controllerLister, replicaSetLister, statefulSetLister, args.HardPodAffinitySymmetricWeight)
3433
})
35-
36-
// ServiceSpreadingPriority is a priority config factory that spreads pods by minimizing
37-
// the number of pods (belonging to the same service) on the same node.
38-
// Register the factory so that it's available, but do not include it as part of the default priorities
39-
// Largely replaced by "SelectorSpreadPriority", but registered for backward compatibility with 1.0
40-
scheduler.RegisterPriorityConfigFactory(
41-
priorities.ServiceSpreadingPriority,
42-
scheduler.PriorityConfigFactory{
43-
MapReduceFunction: func(args scheduler.AlgorithmFactoryArgs) (priorities.PriorityMapFunction, priorities.PriorityReduceFunction) {
44-
serviceLister := args.InformerFactory.Core().V1().Services().Lister()
45-
return priorities.NewSelectorSpreadPriority(serviceLister, algorithm.EmptyControllerLister{}, algorithm.EmptyReplicaSetLister{}, algorithm.EmptyStatefulSetLister{})
46-
},
47-
Weight: 1,
48-
},
49-
)
50-
// Optional, cluster-autoscaler friendly priority function - give used nodes higher priority.
51-
scheduler.RegisterPriorityMapReduceFunction(priorities.MostRequestedPriority, priorities.MostRequestedPriorityMap, nil, 1)
52-
scheduler.RegisterPriorityMapReduceFunction(
53-
priorities.RequestedToCapacityRatioPriority,
54-
priorities.RequestedToCapacityRatioResourceAllocationPriorityDefault().PriorityMap,
55-
nil,
56-
1)
57-
// spreads pods by minimizing the number of pods (belonging to the same service or replication controller) on the same node.
58-
scheduler.RegisterPriorityConfigFactory(
59-
priorities.SelectorSpreadPriority,
60-
scheduler.PriorityConfigFactory{
61-
MapReduceFunction: func(args scheduler.AlgorithmFactoryArgs) (priorities.PriorityMapFunction, priorities.PriorityReduceFunction) {
62-
serviceLister := args.InformerFactory.Core().V1().Services().Lister()
63-
controllerLister := args.InformerFactory.Core().V1().ReplicationControllers().Lister()
64-
replicaSetLister := args.InformerFactory.Apps().V1().ReplicaSets().Lister()
65-
statefulSetLister := args.InformerFactory.Apps().V1().StatefulSets().Lister()
66-
return priorities.NewSelectorSpreadPriority(serviceLister, controllerLister, replicaSetLister, statefulSetLister)
67-
},
68-
Weight: 1,
69-
},
70-
)
71-
// pods should be placed in the same topological domain (e.g. same node, same rack, same zone, same power domain, etc.)
72-
// as some other pods, or, conversely, should not be placed in the same topological domain as some other pods.
73-
scheduler.RegisterPriorityMapReduceFunction(priorities.InterPodAffinityPriority, nil, nil, 1)
74-
75-
// Prioritize nodes by least requested utilization.
76-
scheduler.RegisterPriorityMapReduceFunction(priorities.LeastRequestedPriority, priorities.LeastRequestedPriorityMap, nil, 1)
77-
78-
// Prioritizes nodes to help achieve balanced resource usage
79-
scheduler.RegisterPriorityMapReduceFunction(priorities.BalancedResourceAllocation, priorities.BalancedResourceAllocationMap, nil, 1)
80-
81-
// Set this weight large enough to override all other priority functions.
82-
// TODO: Figure out a better way to do this, maybe at same time as fixing #24720.
83-
scheduler.RegisterPriorityMapReduceFunction(priorities.NodePreferAvoidPodsPriority, nil, nil, 10000)
84-
85-
// Prioritizes nodes that have labels matching NodeAffinity
86-
scheduler.RegisterPriorityMapReduceFunction(priorities.NodeAffinityPriority, nil, nil, 1)
87-
88-
// Prioritizes nodes that marked with taint which pod can tolerate.
89-
scheduler.RegisterPriorityMapReduceFunction(priorities.TaintTolerationPriority, nil, nil, 1)
90-
91-
// ImageLocalityPriority prioritizes nodes that have images requested by the pod present.
92-
scheduler.RegisterPriorityMapReduceFunction(priorities.ImageLocalityPriority, nil, nil, 1)
9334
}

pkg/scheduler/algorithmprovider/plugins_test.go

Lines changed: 2 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ limitations under the License.
1717
package algorithmprovider
1818

1919
import (
20-
"fmt"
2120
"testing"
2221

2322
"k8s.io/kubernetes/pkg/scheduler"
@@ -30,47 +29,6 @@ var (
3029
}
3130
)
3231

33-
func TestDefaultConfigExists(t *testing.T) {
34-
p, err := scheduler.GetAlgorithmProvider(schedulerapi.SchedulerDefaultProviderName)
35-
if err != nil {
36-
t.Errorf("error retrieving default provider: %v", err)
37-
}
38-
if p == nil {
39-
t.Error("algorithm provider config should not be nil")
40-
}
41-
if len(p.FitPredicateKeys) == 0 {
42-
t.Error("default algorithm provider shouldn't have 0 fit predicates")
43-
}
44-
}
45-
46-
func TestAlgorithmProviders(t *testing.T) {
47-
for _, pn := range algorithmProviderNames {
48-
t.Run(pn, func(t *testing.T) {
49-
p, err := scheduler.GetAlgorithmProvider(pn)
50-
if err != nil {
51-
t.Fatalf("error retrieving provider: %v", err)
52-
}
53-
if len(p.PriorityFunctionKeys) == 0 {
54-
t.Errorf("algorithm provider shouldn't have 0 priority functions")
55-
}
56-
for _, pf := range p.PriorityFunctionKeys.List() {
57-
t.Run(fmt.Sprintf("priorityfunction/%s", pf), func(t *testing.T) {
58-
if !scheduler.IsPriorityFunctionRegistered(pf) {
59-
t.Errorf("priority function is not registered but is used in the algorithm provider")
60-
}
61-
})
62-
}
63-
for _, fp := range p.FitPredicateKeys.List() {
64-
t.Run(fmt.Sprintf("fitpredicate/%s", fp), func(t *testing.T) {
65-
if !scheduler.IsFitPredicateRegistered(fp) {
66-
t.Errorf("fit predicate is not registered but is used in the algorithm provider")
67-
}
68-
})
69-
}
70-
})
71-
}
72-
}
73-
7432
func TestApplyFeatureGates(t *testing.T) {
7533
for _, pn := range algorithmProviderNames {
7634
t.Run(pn, func(t *testing.T) {
@@ -79,7 +37,7 @@ func TestApplyFeatureGates(t *testing.T) {
7937
t.Fatalf("Error retrieving provider: %v", err)
8038
}
8139

82-
if !p.FitPredicateKeys.Has("PodToleratesNodeTaints") {
40+
if !p.PredicateKeys.Has("PodToleratesNodeTaints") {
8341
t.Fatalf("Failed to find predicate: 'PodToleratesNodeTaints'")
8442
}
8543
})
@@ -94,7 +52,7 @@ func TestApplyFeatureGates(t *testing.T) {
9452
t.Fatalf("Error retrieving '%s' provider: %v", pn, err)
9553
}
9654

97-
if !p.FitPredicateKeys.Has("PodToleratesNodeTaints") {
55+
if !p.PredicateKeys.Has("PodToleratesNodeTaints") {
9856
t.Fatalf("Failed to find predicate: 'PodToleratesNodeTaints'")
9957
}
10058
})

pkg/scheduler/apis/config/testing/BUILD

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ go_test(
1818
"//staging/src/k8s.io/api/core/v1:go_default_library",
1919
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
2020
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
21-
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
2221
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
2322
"//staging/src/k8s.io/client-go/informers:go_default_library",
2423
"//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library",

0 commit comments

Comments
 (0)