Skip to content

Commit 81acde7

Browse files
authored
Merge pull request kubernetes#87430 from alculquicondor/feat/bind_plugin
Move default binding to a plugin
2 parents a06d165 + 4a5ab84 commit 81acde7

File tree

24 files changed

+564
-250
lines changed

24 files changed

+564
-250
lines changed

pkg/scheduler/BUILD

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ go_library(
1818
"//pkg/scheduler/apis/config/validation:go_default_library",
1919
"//pkg/scheduler/core:go_default_library",
2020
"//pkg/scheduler/framework/plugins:go_default_library",
21+
"//pkg/scheduler/framework/plugins/defaultbinder:go_default_library",
2122
"//pkg/scheduler/framework/plugins/interpodaffinity:go_default_library",
2223
"//pkg/scheduler/framework/plugins/noderesources:go_default_library",
2324
"//pkg/scheduler/framework/plugins/queuesort:go_default_library",
@@ -66,6 +67,7 @@ go_test(
6667
"//pkg/scheduler/apis/extender/v1:go_default_library",
6768
"//pkg/scheduler/core:go_default_library",
6869
"//pkg/scheduler/framework/plugins:go_default_library",
70+
"//pkg/scheduler/framework/plugins/defaultbinder:go_default_library",
6971
"//pkg/scheduler/framework/plugins/nodelabel:go_default_library",
7072
"//pkg/scheduler/framework/plugins/nodeports:go_default_library",
7173
"//pkg/scheduler/framework/plugins/noderesources:go_default_library",
@@ -95,7 +97,6 @@ go_test(
9597
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
9698
"//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library",
9799
"//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library",
98-
"//staging/src/k8s.io/client-go/kubernetes/typed/core/v1/fake:go_default_library",
99100
"//staging/src/k8s.io/client-go/testing:go_default_library",
100101
"//staging/src/k8s.io/client-go/tools/cache:go_default_library",
101102
"//staging/src/k8s.io/client-go/tools/events:go_default_library",

pkg/scheduler/algorithmprovider/BUILD

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ go_library(
1313
deps = [
1414
"//pkg/features:go_default_library",
1515
"//pkg/scheduler/apis/config:go_default_library",
16+
"//pkg/scheduler/framework/plugins/defaultbinder:go_default_library",
1617
"//pkg/scheduler/framework/plugins/defaultpodtopologyspread:go_default_library",
1718
"//pkg/scheduler/framework/plugins/imagelocality:go_default_library",
1819
"//pkg/scheduler/framework/plugins/interpodaffinity:go_default_library",
@@ -42,6 +43,7 @@ go_test(
4243
deps = [
4344
"//pkg/features:go_default_library",
4445
"//pkg/scheduler/apis/config:go_default_library",
46+
"//pkg/scheduler/framework/plugins/defaultbinder:go_default_library",
4547
"//pkg/scheduler/framework/plugins/defaultpodtopologyspread:go_default_library",
4648
"//pkg/scheduler/framework/plugins/imagelocality:go_default_library",
4749
"//pkg/scheduler/framework/plugins/interpodaffinity:go_default_library",

pkg/scheduler/algorithmprovider/registry.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
"k8s.io/klog"
2727
"k8s.io/kubernetes/pkg/features"
2828
schedulerapi "k8s.io/kubernetes/pkg/scheduler/apis/config"
29+
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/defaultbinder"
2930
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/defaultpodtopologyspread"
3031
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/imagelocality"
3132
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/interpodaffinity"
@@ -133,6 +134,11 @@ func getDefaultConfig(hardPodAffinityWeight int64) *Config {
133134
{Name: tainttoleration.Name, Weight: 1},
134135
},
135136
},
137+
Bind: &schedulerapi.PluginSet{
138+
Enabled: []schedulerapi.Plugin{
139+
{Name: defaultbinder.Name},
140+
},
141+
},
136142
},
137143
FrameworkPluginConfig: []schedulerapi.PluginConfig{
138144
{

pkg/scheduler/algorithmprovider/registry_test.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@ import (
2121
"testing"
2222

2323
"github.com/google/go-cmp/cmp"
24-
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/queuesort"
2524

2625
"k8s.io/apimachinery/pkg/runtime"
2726
utilfeature "k8s.io/apiserver/pkg/util/feature"
2827
featuregatetesting "k8s.io/component-base/featuregate/testing"
2928
"k8s.io/kubernetes/pkg/features"
3029
schedulerapi "k8s.io/kubernetes/pkg/scheduler/apis/config"
30+
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/defaultbinder"
3131
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/defaultpodtopologyspread"
3232
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/imagelocality"
3333
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/interpodaffinity"
@@ -39,6 +39,7 @@ import (
3939
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/nodeunschedulable"
4040
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/nodevolumelimits"
4141
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/podtopologyspread"
42+
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/queuesort"
4243
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/tainttoleration"
4344
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding"
4445
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumerestrictions"
@@ -98,6 +99,11 @@ func TestClusterAutoscalerProvider(t *testing.T) {
9899
{Name: tainttoleration.Name, Weight: 1},
99100
},
100101
},
102+
Bind: &schedulerapi.PluginSet{
103+
Enabled: []schedulerapi.Plugin{
104+
{Name: defaultbinder.Name},
105+
},
106+
},
101107
},
102108
FrameworkPluginConfig: []schedulerapi.PluginConfig{
103109
{
@@ -175,6 +181,11 @@ func TestApplyFeatureGates(t *testing.T) {
175181
{Name: tainttoleration.Name, Weight: 1},
176182
},
177183
},
184+
Bind: &schedulerapi.PluginSet{
185+
Enabled: []schedulerapi.Plugin{
186+
{Name: defaultbinder.Name},
187+
},
188+
},
178189
},
179190
FrameworkPluginConfig: []schedulerapi.PluginConfig{
180191
{
@@ -244,6 +255,11 @@ func TestApplyFeatureGates(t *testing.T) {
244255
{Name: noderesources.ResourceLimitsName, Weight: 1},
245256
},
246257
},
258+
Bind: &schedulerapi.PluginSet{
259+
Enabled: []schedulerapi.Plugin{
260+
{Name: defaultbinder.Name},
261+
},
262+
},
247263
},
248264
FrameworkPluginConfig: []schedulerapi.PluginConfig{
249265
{

pkg/scheduler/apis/config/testing/compatibility_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) {
7474
{Name: "NodeAffinity"},
7575
{Name: "TaintToleration"},
7676
},
77+
"BindPlugin": {{Name: "DefaultBinder"}},
7778
},
7879
},
7980
// This is a special test for the case where a policy is specified without specifying any filters.
@@ -93,6 +94,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) {
9394
{Name: "NodeUnschedulable"},
9495
{Name: "TaintToleration"},
9596
},
97+
"BindPlugin": {{Name: "DefaultBinder"}},
9698
},
9799
},
98100
// Do not change this JSON after the corresponding release has been tagged.
@@ -140,6 +142,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) {
140142
{Name: "DefaultPodTopologySpread", Weight: 2},
141143
{Name: "ServiceAffinity", Weight: 3},
142144
},
145+
"BindPlugin": {{Name: "DefaultBinder"}},
143146
},
144147
},
145148

@@ -195,6 +198,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) {
195198
{Name: "DefaultPodTopologySpread", Weight: 2},
196199
{Name: "ServiceAffinity", Weight: 6}, // Weight is the 3 * number of custom ServiceAntiAffinity priorities
197200
},
201+
"BindPlugin": {{Name: "DefaultBinder"}},
198202
},
199203
},
200204
// Do not change this JSON after the corresponding release has been tagged.
@@ -259,6 +263,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) {
259263
{Name: "DefaultPodTopologySpread", Weight: 2},
260264
{Name: "ServiceAffinity", Weight: 3},
261265
},
266+
"BindPlugin": {{Name: "DefaultBinder"}},
262267
},
263268
},
264269

@@ -332,6 +337,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) {
332337
{Name: "DefaultPodTopologySpread", Weight: 2},
333338
{Name: "TaintToleration", Weight: 2},
334339
},
340+
"BindPlugin": {{Name: "DefaultBinder"}},
335341
},
336342
},
337343

@@ -409,6 +415,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) {
409415
{Name: "DefaultPodTopologySpread", Weight: 2},
410416
{Name: "TaintToleration", Weight: 2},
411417
},
418+
"BindPlugin": {{Name: "DefaultBinder"}},
412419
},
413420
},
414421
// Do not change this JSON after the corresponding release has been tagged.
@@ -495,6 +502,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) {
495502
{Name: "DefaultPodTopologySpread", Weight: 2},
496503
{Name: "TaintToleration", Weight: 2},
497504
},
505+
"BindPlugin": {{Name: "DefaultBinder"}},
498506
},
499507
wantExtenders: []config.Extender{{
500508
URLPrefix: "/prefix",
@@ -592,6 +600,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) {
592600
{Name: "DefaultPodTopologySpread", Weight: 2},
593601
{Name: "TaintToleration", Weight: 2},
594602
},
603+
"BindPlugin": {{Name: "DefaultBinder"}},
595604
},
596605
wantExtenders: []config.Extender{{
597606
URLPrefix: "/prefix",
@@ -691,6 +700,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) {
691700
{Name: "DefaultPodTopologySpread", Weight: 2},
692701
{Name: "TaintToleration", Weight: 2},
693702
},
703+
"BindPlugin": {{Name: "DefaultBinder"}},
694704
},
695705
wantExtenders: []config.Extender{{
696706
URLPrefix: "/prefix",
@@ -793,6 +803,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) {
793803
{Name: "DefaultPodTopologySpread", Weight: 2},
794804
{Name: "TaintToleration", Weight: 2},
795805
},
806+
"BindPlugin": {{Name: "DefaultBinder"}},
796807
},
797808
wantExtenders: []config.Extender{{
798809
URLPrefix: "/prefix",
@@ -908,6 +919,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) {
908919
{Name: "DefaultPodTopologySpread", Weight: 2},
909920
{Name: "TaintToleration", Weight: 2},
910921
},
922+
"BindPlugin": {{Name: "DefaultBinder"}},
911923
},
912924
wantExtenders: []config.Extender{{
913925
URLPrefix: "/prefix",
@@ -1025,6 +1037,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) {
10251037
{Name: "DefaultPodTopologySpread", Weight: 2},
10261038
{Name: "TaintToleration", Weight: 2},
10271039
},
1040+
"BindPlugin": {{Name: "DefaultBinder"}},
10281041
},
10291042
wantExtenders: []config.Extender{{
10301043
URLPrefix: "/prefix",
@@ -1142,6 +1155,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) {
11421155
{Name: "DefaultPodTopologySpread", Weight: 2},
11431156
{Name: "TaintToleration", Weight: 2},
11441157
},
1158+
"BindPlugin": {{Name: "DefaultBinder"}},
11451159
},
11461160
wantExtenders: []config.Extender{{
11471161
URLPrefix: "/prefix",
@@ -1263,6 +1277,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) {
12631277
{Name: "DefaultPodTopologySpread", Weight: 2},
12641278
{Name: "TaintToleration", Weight: 2},
12651279
},
1280+
"BindPlugin": {{Name: "DefaultBinder"}},
12661281
},
12671282
wantExtenders: []config.Extender{{
12681283
URLPrefix: "/prefix",
@@ -1309,6 +1324,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) {
13091324
"ScorePlugin": {
13101325
{Name: "PodTopologySpread", Weight: 2},
13111326
},
1327+
"BindPlugin": {{Name: "DefaultBinder"}},
13121328
},
13131329
},
13141330
{
@@ -1336,6 +1352,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) {
13361352
"ScorePlugin": {
13371353
{Name: "NodeResourceLimits", Weight: 2},
13381354
},
1355+
"BindPlugin": {{Name: "DefaultBinder"}},
13391356
},
13401357
},
13411358
}
@@ -1438,6 +1455,7 @@ func TestAlgorithmProviderCompatibility(t *testing.T) {
14381455
{Name: "DefaultPodTopologySpread", Weight: 1},
14391456
{Name: "TaintToleration", Weight: 1},
14401457
},
1458+
"BindPlugin": {{Name: "DefaultBinder"}},
14411459
}
14421460

14431461
testcases := []struct {
@@ -1497,6 +1515,7 @@ func TestAlgorithmProviderCompatibility(t *testing.T) {
14971515
{Name: "DefaultPodTopologySpread", Weight: 1},
14981516
{Name: "TaintToleration", Weight: 1},
14991517
},
1518+
"BindPlugin": {{Name: "DefaultBinder"}},
15001519
},
15011520
},
15021521
}

pkg/scheduler/core/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ go_test(
4646
"//pkg/api/v1/pod:go_default_library",
4747
"//pkg/scheduler/apis/config:go_default_library",
4848
"//pkg/scheduler/apis/extender/v1:go_default_library",
49+
"//pkg/scheduler/framework/plugins/defaultbinder:go_default_library",
4950
"//pkg/scheduler/framework/plugins/defaultpodtopologyspread:go_default_library",
5051
"//pkg/scheduler/framework/plugins/interpodaffinity:go_default_library",
5152
"//pkg/scheduler/framework/plugins/nodeaffinity:go_default_library",

pkg/scheduler/core/extender_test.go

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import (
3535
podutil "k8s.io/kubernetes/pkg/api/v1/pod"
3636
schedulerapi "k8s.io/kubernetes/pkg/scheduler/apis/config"
3737
extenderv1 "k8s.io/kubernetes/pkg/scheduler/apis/extender/v1"
38+
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/defaultbinder"
3839
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/queuesort"
3940
framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
4041
internalcache "k8s.io/kubernetes/pkg/scheduler/internal/cache"
@@ -367,6 +368,7 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
367368
registerPlugins: []st.RegisterPluginFunc{
368369
st.RegisterFilterPlugin("TrueFilter", NewTrueFilterPlugin),
369370
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
371+
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
370372
},
371373
extenders: []FakeExtender{
372374
{
@@ -384,6 +386,7 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
384386
registerPlugins: []st.RegisterPluginFunc{
385387
st.RegisterFilterPlugin("TrueFilter", NewTrueFilterPlugin),
386388
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
389+
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
387390
},
388391
extenders: []FakeExtender{
389392
{
@@ -401,6 +404,7 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
401404
registerPlugins: []st.RegisterPluginFunc{
402405
st.RegisterFilterPlugin("TrueFilter", NewTrueFilterPlugin),
403406
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
407+
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
404408
},
405409
extenders: []FakeExtender{
406410
{
@@ -422,6 +426,7 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
422426
registerPlugins: []st.RegisterPluginFunc{
423427
st.RegisterFilterPlugin("TrueFilter", NewTrueFilterPlugin),
424428
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
429+
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
425430
},
426431
extenders: []FakeExtender{
427432
{
@@ -439,6 +444,7 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
439444
registerPlugins: []st.RegisterPluginFunc{
440445
st.RegisterFilterPlugin("TrueFilter", NewTrueFilterPlugin),
441446
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
447+
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
442448
},
443449
extenders: []FakeExtender{
444450
{
@@ -459,6 +465,7 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
459465
registerPlugins: []st.RegisterPluginFunc{
460466
st.RegisterFilterPlugin("TrueFilter", NewTrueFilterPlugin),
461467
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
468+
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
462469
},
463470
extenders: []FakeExtender{
464471
{
@@ -485,6 +492,7 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
485492
st.RegisterFilterPlugin("TrueFilter", NewTrueFilterPlugin),
486493
st.RegisterScorePlugin("Machine2Prioritizer", newMachine2PrioritizerPlugin(), 20),
487494
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
495+
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
488496
},
489497
extenders: []FakeExtender{
490498
{
@@ -513,6 +521,7 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
513521
st.RegisterFilterPlugin("TrueFilter", NewTrueFilterPlugin),
514522
st.RegisterScorePlugin("Machine2Prioritizer", newMachine2PrioritizerPlugin(), 1),
515523
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
524+
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
516525
},
517526
extenders: []FakeExtender{
518527
{
@@ -539,6 +548,7 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
539548
registerPlugins: []st.RegisterPluginFunc{
540549
st.RegisterFilterPlugin("TrueFilter", NewTrueFilterPlugin),
541550
st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New),
551+
st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New),
542552
},
543553
extenders: []FakeExtender{
544554
{
@@ -575,17 +585,10 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
575585
}
576586
queue := internalqueue.NewSchedulingQueue(nil)
577587

578-
registry := framework.Registry{}
579-
plugins := &schedulerapi.Plugins{
580-
QueueSort: &schedulerapi.PluginSet{},
581-
Filter: &schedulerapi.PluginSet{},
582-
Score: &schedulerapi.PluginSet{},
588+
fwk, err := st.NewFramework(test.registerPlugins, framework.WithClientSet(client))
589+
if err != nil {
590+
t.Fatal(err)
583591
}
584-
var pluginConfigs []schedulerapi.PluginConfig
585-
for _, f := range test.registerPlugins {
586-
f(&registry, plugins, pluginConfigs)
587-
}
588-
fwk, _ := framework.NewFramework(registry, plugins, pluginConfigs)
589592

590593
scheduler := NewGenericScheduler(
591594
cache,

0 commit comments

Comments
 (0)