diff --git a/cmd/kube-scheduler/app/server_test.go b/cmd/kube-scheduler/app/server_test.go index 6d39b7eca14..37fd74a1549 100644 --- a/cmd/kube-scheduler/app/server_test.go +++ b/cmd/kube-scheduler/app/server_test.go @@ -185,7 +185,7 @@ profiles: {Name: "InterPodAffinity"}, {Name: "PodTopologySpread"}, {Name: "TaintToleration"}, - {Name: "DefaultPodTopologySpread"}, + {Name: "SelectorSpread"}, }, "ScorePlugin": { {Name: "NodeResourcesBalancedAllocation", Weight: 1}, @@ -196,7 +196,7 @@ profiles: {Name: "NodePreferAvoidPods", Weight: 10000}, {Name: "PodTopologySpread", Weight: 2}, {Name: "TaintToleration", Weight: 1}, - {Name: "DefaultPodTopologySpread", Weight: 1}, + {Name: "SelectorSpread", Weight: 1}, }, "BindPlugin": {{Name: "DefaultBinder"}}, "ReservePlugin": {{Name: "VolumeBinding"}}, @@ -315,7 +315,7 @@ profiles: {Name: "InterPodAffinity"}, {Name: "PodTopologySpread"}, {Name: "TaintToleration"}, - {Name: "DefaultPodTopologySpread"}, + {Name: "SelectorSpread"}, }, "ScorePlugin": { {Name: "NodeResourcesBalancedAllocation", Weight: 1}, @@ -326,7 +326,7 @@ profiles: {Name: "NodePreferAvoidPods", Weight: 10000}, {Name: "PodTopologySpread", Weight: 2}, {Name: "TaintToleration", Weight: 1}, - {Name: "DefaultPodTopologySpread", Weight: 1}, + {Name: "SelectorSpread", Weight: 1}, }, "BindPlugin": {{Name: "DefaultBinder"}}, "ReservePlugin": {{Name: "VolumeBinding"}}, diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index b43393288f5..a0c1eb90da5 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -297,7 +297,7 @@ const ( // alpha: v1.19 // // Enables the use of PodTopologySpread scheduling plugin to do default - // spreading and disables legacy DefaultPodTopologySpread plugin. + // spreading and disables legacy SelectorSpread plugin. DefaultPodTopologySpread featuregate.Feature = "DefaultPodTopologySpread" // owner: @tallclair diff --git a/pkg/scheduler/algorithmprovider/BUILD b/pkg/scheduler/algorithmprovider/BUILD index 72807c7f144..ac0e8bc5625 100644 --- a/pkg/scheduler/algorithmprovider/BUILD +++ b/pkg/scheduler/algorithmprovider/BUILD @@ -14,7 +14,6 @@ go_library( "//pkg/features:go_default_library", "//pkg/scheduler/apis/config:go_default_library", "//pkg/scheduler/framework/plugins/defaultbinder:go_default_library", - "//pkg/scheduler/framework/plugins/defaultpodtopologyspread:go_default_library", "//pkg/scheduler/framework/plugins/defaultpreemption:go_default_library", "//pkg/scheduler/framework/plugins/imagelocality:go_default_library", "//pkg/scheduler/framework/plugins/interpodaffinity:go_default_library", @@ -27,6 +26,7 @@ go_library( "//pkg/scheduler/framework/plugins/nodevolumelimits:go_default_library", "//pkg/scheduler/framework/plugins/podtopologyspread:go_default_library", "//pkg/scheduler/framework/plugins/queuesort:go_default_library", + "//pkg/scheduler/framework/plugins/selectorspread:go_default_library", "//pkg/scheduler/framework/plugins/tainttoleration:go_default_library", "//pkg/scheduler/framework/plugins/volumebinding:go_default_library", "//pkg/scheduler/framework/plugins/volumerestrictions:go_default_library", @@ -44,7 +44,6 @@ go_test( "//pkg/features:go_default_library", "//pkg/scheduler/apis/config:go_default_library", "//pkg/scheduler/framework/plugins/defaultbinder:go_default_library", - "//pkg/scheduler/framework/plugins/defaultpodtopologyspread:go_default_library", "//pkg/scheduler/framework/plugins/defaultpreemption:go_default_library", "//pkg/scheduler/framework/plugins/imagelocality:go_default_library", "//pkg/scheduler/framework/plugins/interpodaffinity:go_default_library", @@ -57,6 +56,7 @@ go_test( "//pkg/scheduler/framework/plugins/nodevolumelimits:go_default_library", "//pkg/scheduler/framework/plugins/podtopologyspread:go_default_library", "//pkg/scheduler/framework/plugins/queuesort:go_default_library", + "//pkg/scheduler/framework/plugins/selectorspread:go_default_library", "//pkg/scheduler/framework/plugins/tainttoleration:go_default_library", "//pkg/scheduler/framework/plugins/volumebinding:go_default_library", "//pkg/scheduler/framework/plugins/volumerestrictions:go_default_library", diff --git a/pkg/scheduler/algorithmprovider/registry.go b/pkg/scheduler/algorithmprovider/registry.go index 6da9569258b..1a84705a03c 100644 --- a/pkg/scheduler/algorithmprovider/registry.go +++ b/pkg/scheduler/algorithmprovider/registry.go @@ -25,7 +25,6 @@ import ( "k8s.io/kubernetes/pkg/features" schedulerapi "k8s.io/kubernetes/pkg/scheduler/apis/config" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/defaultbinder" - "k8s.io/kubernetes/pkg/scheduler/framework/plugins/defaultpodtopologyspread" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/defaultpreemption" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/imagelocality" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/interpodaffinity" @@ -38,6 +37,7 @@ import ( "k8s.io/kubernetes/pkg/scheduler/framework/plugins/nodevolumelimits" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/podtopologyspread" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/queuesort" + "k8s.io/kubernetes/pkg/scheduler/framework/plugins/selectorspread" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/tainttoleration" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumerestrictions" @@ -170,8 +170,8 @@ func applyFeatureGates(config *schedulerapi.Plugins) { if !utilfeature.DefaultFeatureGate.Enabled(features.DefaultPodTopologySpread) { // When feature is enabled, the default spreading is done by // PodTopologySpread plugin, which is enabled by default. - klog.Infof("Registering DefaultPodTopologySpread plugin") - s := schedulerapi.Plugin{Name: defaultpodtopologyspread.Name} + klog.Infof("Registering SelectorSpread plugin") + s := schedulerapi.Plugin{Name: selectorspread.Name} config.PreScore.Enabled = append(config.PreScore.Enabled, s) s.Weight = 1 config.Score.Enabled = append(config.Score.Enabled, s) diff --git a/pkg/scheduler/algorithmprovider/registry_test.go b/pkg/scheduler/algorithmprovider/registry_test.go index cd8657080b5..23d492cb8e0 100644 --- a/pkg/scheduler/algorithmprovider/registry_test.go +++ b/pkg/scheduler/algorithmprovider/registry_test.go @@ -28,7 +28,6 @@ import ( "k8s.io/kubernetes/pkg/features" schedulerapi "k8s.io/kubernetes/pkg/scheduler/apis/config" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/defaultbinder" - "k8s.io/kubernetes/pkg/scheduler/framework/plugins/defaultpodtopologyspread" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/imagelocality" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/interpodaffinity" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/nodeaffinity" @@ -40,6 +39,7 @@ import ( "k8s.io/kubernetes/pkg/scheduler/framework/plugins/nodevolumelimits" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/podtopologyspread" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/queuesort" + "k8s.io/kubernetes/pkg/scheduler/framework/plugins/selectorspread" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/tainttoleration" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumerestrictions" @@ -91,7 +91,7 @@ func TestClusterAutoscalerProvider(t *testing.T) { {Name: interpodaffinity.Name}, {Name: podtopologyspread.Name}, {Name: tainttoleration.Name}, - {Name: defaultpodtopologyspread.Name}, + {Name: selectorspread.Name}, }, }, Score: &schedulerapi.PluginSet{ @@ -104,7 +104,7 @@ func TestClusterAutoscalerProvider(t *testing.T) { {Name: nodepreferavoidpods.Name, Weight: 10000}, {Name: podtopologyspread.Name, Weight: 2}, {Name: tainttoleration.Name, Weight: 1}, - {Name: defaultpodtopologyspread.Name, Weight: 1}, + {Name: selectorspread.Name, Weight: 1}, }, }, Reserve: &schedulerapi.PluginSet{ @@ -183,7 +183,7 @@ func TestApplyFeatureGates(t *testing.T) { {Name: interpodaffinity.Name}, {Name: podtopologyspread.Name}, {Name: tainttoleration.Name}, - {Name: defaultpodtopologyspread.Name}, + {Name: selectorspread.Name}, }, }, Score: &schedulerapi.PluginSet{ @@ -196,7 +196,7 @@ func TestApplyFeatureGates(t *testing.T) { {Name: nodepreferavoidpods.Name, Weight: 10000}, {Name: podtopologyspread.Name, Weight: 2}, {Name: tainttoleration.Name, Weight: 1}, - {Name: defaultpodtopologyspread.Name, Weight: 1}, + {Name: selectorspread.Name, Weight: 1}, }, }, Reserve: &schedulerapi.PluginSet{ diff --git a/pkg/scheduler/apis/config/testing/compatibility_test.go b/pkg/scheduler/apis/config/testing/compatibility_test.go index 47e9504ba6f..4f512dd17c0 100644 --- a/pkg/scheduler/apis/config/testing/compatibility_test.go +++ b/pkg/scheduler/apis/config/testing/compatibility_test.go @@ -136,11 +136,11 @@ func TestCompatibility_v1_Scheduler(t *testing.T) { {Name: "NodeLabel"}, {Name: "ServiceAffinity"}, }, - "PreScorePlugin": {{Name: "DefaultPodTopologySpread"}}, + "PreScorePlugin": {{Name: "SelectorSpread"}}, "ScorePlugin": { {Name: "NodeResourcesLeastAllocated", Weight: 1}, {Name: "NodeLabel", Weight: 4}, - {Name: "DefaultPodTopologySpread", Weight: 2}, + {Name: "SelectorSpread", Weight: 2}, {Name: "ServiceAffinity", Weight: 3}, }, "BindPlugin": {{Name: "DefaultBinder"}}, @@ -191,12 +191,12 @@ func TestCompatibility_v1_Scheduler(t *testing.T) { {Name: "NodeLabel"}, {Name: "ServiceAffinity"}, }, - "PreScorePlugin": {{Name: "DefaultPodTopologySpread"}}, + "PreScorePlugin": {{Name: "SelectorSpread"}}, "ScorePlugin": { {Name: "NodeResourcesBalancedAllocation", Weight: 2}, {Name: "NodeResourcesLeastAllocated", Weight: 2}, {Name: "NodeLabel", Weight: 8}, // Weight is 4 * number of LabelPreference priorities - {Name: "DefaultPodTopologySpread", Weight: 2}, + {Name: "SelectorSpread", Weight: 2}, {Name: "ServiceAffinity", Weight: 6}, // Weight is the 3 * number of custom ServiceAntiAffinity priorities }, "BindPlugin": {{Name: "DefaultBinder"}}, @@ -254,14 +254,14 @@ func TestCompatibility_v1_Scheduler(t *testing.T) { {Name: "AzureDiskLimits"}, {Name: "VolumeZone"}, }, - "PreScorePlugin": {{Name: "DefaultPodTopologySpread"}}, + "PreScorePlugin": {{Name: "SelectorSpread"}}, "ScorePlugin": { {Name: "NodeResourcesBalancedAllocation", Weight: 2}, {Name: "ImageLocality", Weight: 2}, {Name: "NodeResourcesLeastAllocated", Weight: 2}, {Name: "NodeAffinity", Weight: 2}, {Name: "NodeLabel", Weight: 4}, - {Name: "DefaultPodTopologySpread", Weight: 2}, + {Name: "SelectorSpread", Weight: 2}, {Name: "ServiceAffinity", Weight: 3}, }, "BindPlugin": {{Name: "DefaultBinder"}}, @@ -326,7 +326,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) { }, "PreScorePlugin": { {Name: "InterPodAffinity"}, - {Name: "DefaultPodTopologySpread"}, + {Name: "SelectorSpread"}, {Name: "TaintToleration"}, }, "ScorePlugin": { @@ -335,7 +335,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) { {Name: "InterPodAffinity", Weight: 2}, {Name: "NodeResourcesLeastAllocated", Weight: 2}, {Name: "NodeAffinity", Weight: 2}, - {Name: "DefaultPodTopologySpread", Weight: 2}, + {Name: "SelectorSpread", Weight: 2}, {Name: "TaintToleration", Weight: 2}, }, "BindPlugin": {{Name: "DefaultBinder"}}, @@ -402,7 +402,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) { }, "PreScorePlugin": { {Name: "InterPodAffinity"}, - {Name: "DefaultPodTopologySpread"}, + {Name: "SelectorSpread"}, {Name: "TaintToleration"}, }, "ScorePlugin": { @@ -413,7 +413,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) { {Name: "NodeResourcesMostAllocated", Weight: 2}, {Name: "NodeAffinity", Weight: 2}, {Name: "NodePreferAvoidPods", Weight: 2}, - {Name: "DefaultPodTopologySpread", Weight: 2}, + {Name: "SelectorSpread", Weight: 2}, {Name: "TaintToleration", Weight: 2}, }, "BindPlugin": {{Name: "DefaultBinder"}}, @@ -489,7 +489,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) { }, "PreScorePlugin": { {Name: "InterPodAffinity"}, - {Name: "DefaultPodTopologySpread"}, + {Name: "SelectorSpread"}, {Name: "TaintToleration"}, }, "ScorePlugin": { @@ -500,7 +500,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) { {Name: "NodeResourcesMostAllocated", Weight: 2}, {Name: "NodeAffinity", Weight: 2}, {Name: "NodePreferAvoidPods", Weight: 2}, - {Name: "DefaultPodTopologySpread", Weight: 2}, + {Name: "SelectorSpread", Weight: 2}, {Name: "TaintToleration", Weight: 2}, }, "BindPlugin": {{Name: "DefaultBinder"}}, @@ -587,7 +587,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) { }, "PreScorePlugin": { {Name: "InterPodAffinity"}, - {Name: "DefaultPodTopologySpread"}, + {Name: "SelectorSpread"}, {Name: "TaintToleration"}, }, "ScorePlugin": { @@ -598,7 +598,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) { {Name: "NodeResourcesMostAllocated", Weight: 2}, {Name: "NodeAffinity", Weight: 2}, {Name: "NodePreferAvoidPods", Weight: 2}, - {Name: "DefaultPodTopologySpread", Weight: 2}, + {Name: "SelectorSpread", Weight: 2}, {Name: "TaintToleration", Weight: 2}, }, "BindPlugin": {{Name: "DefaultBinder"}}, @@ -688,7 +688,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) { }, "PreScorePlugin": { {Name: "InterPodAffinity"}, - {Name: "DefaultPodTopologySpread"}, + {Name: "SelectorSpread"}, {Name: "TaintToleration"}, }, "ScorePlugin": { @@ -699,7 +699,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) { {Name: "NodeResourcesMostAllocated", Weight: 2}, {Name: "NodeAffinity", Weight: 2}, {Name: "NodePreferAvoidPods", Weight: 2}, - {Name: "DefaultPodTopologySpread", Weight: 2}, + {Name: "SelectorSpread", Weight: 2}, {Name: "TaintToleration", Weight: 2}, }, "BindPlugin": {{Name: "DefaultBinder"}}, @@ -794,7 +794,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) { }, "PreScorePlugin": { {Name: "InterPodAffinity"}, - {Name: "DefaultPodTopologySpread"}, + {Name: "SelectorSpread"}, {Name: "TaintToleration"}, }, "ScorePlugin": { @@ -805,7 +805,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) { {Name: "NodeResourcesMostAllocated", Weight: 2}, {Name: "NodeAffinity", Weight: 2}, {Name: "NodePreferAvoidPods", Weight: 2}, - {Name: "DefaultPodTopologySpread", Weight: 2}, + {Name: "SelectorSpread", Weight: 2}, {Name: "TaintToleration", Weight: 2}, }, "BindPlugin": {{Name: "DefaultBinder"}}, @@ -912,7 +912,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) { }, "PreScorePlugin": { {Name: "InterPodAffinity"}, - {Name: "DefaultPodTopologySpread"}, + {Name: "SelectorSpread"}, {Name: "TaintToleration"}, }, "ScorePlugin": { @@ -924,7 +924,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) { {Name: "NodeAffinity", Weight: 2}, {Name: "NodePreferAvoidPods", Weight: 2}, {Name: "RequestedToCapacityRatio", Weight: 2}, - {Name: "DefaultPodTopologySpread", Weight: 2}, + {Name: "SelectorSpread", Weight: 2}, {Name: "TaintToleration", Weight: 2}, }, "BindPlugin": {{Name: "DefaultBinder"}}, @@ -1033,7 +1033,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) { }, "PreScorePlugin": { {Name: "InterPodAffinity"}, - {Name: "DefaultPodTopologySpread"}, + {Name: "SelectorSpread"}, {Name: "TaintToleration"}, }, "ScorePlugin": { @@ -1045,7 +1045,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) { {Name: "NodeAffinity", Weight: 2}, {Name: "NodePreferAvoidPods", Weight: 2}, {Name: "RequestedToCapacityRatio", Weight: 2}, - {Name: "DefaultPodTopologySpread", Weight: 2}, + {Name: "SelectorSpread", Weight: 2}, {Name: "TaintToleration", Weight: 2}, }, "BindPlugin": {{Name: "DefaultBinder"}}, @@ -1154,7 +1154,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) { }, "PreScorePlugin": { {Name: "InterPodAffinity"}, - {Name: "DefaultPodTopologySpread"}, + {Name: "SelectorSpread"}, {Name: "TaintToleration"}, }, "ScorePlugin": { @@ -1166,7 +1166,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) { {Name: "NodeAffinity", Weight: 2}, {Name: "NodePreferAvoidPods", Weight: 2}, {Name: "RequestedToCapacityRatio", Weight: 2}, - {Name: "DefaultPodTopologySpread", Weight: 2}, + {Name: "SelectorSpread", Weight: 2}, {Name: "TaintToleration", Weight: 2}, }, "BindPlugin": {{Name: "DefaultBinder"}}, @@ -1279,7 +1279,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) { }, "PreScorePlugin": { {Name: "InterPodAffinity"}, - {Name: "DefaultPodTopologySpread"}, + {Name: "SelectorSpread"}, {Name: "TaintToleration"}, }, "ScorePlugin": { @@ -1291,7 +1291,7 @@ func TestCompatibility_v1_Scheduler(t *testing.T) { {Name: "NodeAffinity", Weight: 2}, {Name: "NodePreferAvoidPods", Weight: 2}, {Name: "RequestedToCapacityRatio", Weight: 2}, - {Name: "DefaultPodTopologySpread", Weight: 2}, + {Name: "SelectorSpread", Weight: 2}, {Name: "TaintToleration", Weight: 2}, }, "BindPlugin": {{Name: "DefaultBinder"}}, @@ -1409,7 +1409,7 @@ func TestAlgorithmProviderCompatibility(t *testing.T) { {Name: "InterPodAffinity"}, {Name: "PodTopologySpread"}, {Name: "TaintToleration"}, - {Name: "DefaultPodTopologySpread"}, + {Name: "SelectorSpread"}, }, "ScorePlugin": { {Name: "NodeResourcesBalancedAllocation", Weight: 1}, @@ -1420,7 +1420,7 @@ func TestAlgorithmProviderCompatibility(t *testing.T) { {Name: "NodePreferAvoidPods", Weight: 10000}, {Name: "PodTopologySpread", Weight: 2}, {Name: "TaintToleration", Weight: 1}, - {Name: "DefaultPodTopologySpread", Weight: 1}, + {Name: "SelectorSpread", Weight: 1}, }, "BindPlugin": {{Name: "DefaultBinder"}}, "ReservePlugin": {{Name: "VolumeBinding"}}, @@ -1479,7 +1479,7 @@ func TestAlgorithmProviderCompatibility(t *testing.T) { {Name: "InterPodAffinity"}, {Name: "PodTopologySpread"}, {Name: "TaintToleration"}, - {Name: "DefaultPodTopologySpread"}, + {Name: "SelectorSpread"}, }, "ScorePlugin": { {Name: "NodeResourcesBalancedAllocation", Weight: 1}, @@ -1490,7 +1490,7 @@ func TestAlgorithmProviderCompatibility(t *testing.T) { {Name: "NodePreferAvoidPods", Weight: 10000}, {Name: "PodTopologySpread", Weight: 2}, {Name: "TaintToleration", Weight: 1}, - {Name: "DefaultPodTopologySpread", Weight: 1}, + {Name: "SelectorSpread", Weight: 1}, }, "ReservePlugin": {{Name: "VolumeBinding"}}, "PreBindPlugin": {{Name: "VolumeBinding"}}, @@ -1569,7 +1569,7 @@ func TestPluginsConfigurationCompatibility(t *testing.T) { {Name: "InterPodAffinity"}, {Name: "PodTopologySpread"}, {Name: "TaintToleration"}, - {Name: "DefaultPodTopologySpread"}, + {Name: "SelectorSpread"}, }, "ScorePlugin": { {Name: "NodeResourcesBalancedAllocation", Weight: 1}, @@ -1580,7 +1580,7 @@ func TestPluginsConfigurationCompatibility(t *testing.T) { {Name: "NodePreferAvoidPods", Weight: 10000}, {Name: "PodTopologySpread", Weight: 2}, {Name: "TaintToleration", Weight: 1}, - {Name: "DefaultPodTopologySpread", Weight: 1}, + {Name: "SelectorSpread", Weight: 1}, }, "ReservePlugin": {{Name: "VolumeBinding"}}, "PreBindPlugin": {{Name: "VolumeBinding"}}, @@ -1770,7 +1770,7 @@ func TestPluginsConfigurationCompatibility(t *testing.T) { PreScore: &config.PluginSet{ Disabled: []config.Plugin{ {Name: "InterPodAffinity"}, - {Name: "DefaultPodTopologySpread"}, + {Name: "SelectorSpread"}, {Name: "TaintToleration"}, {Name: "PodTopologySpread"}, }, @@ -1783,7 +1783,7 @@ func TestPluginsConfigurationCompatibility(t *testing.T) { {Name: "NodeResourcesLeastAllocated"}, {Name: "NodeAffinity"}, {Name: "NodePreferAvoidPods"}, - {Name: "DefaultPodTopologySpread"}, + {Name: "SelectorSpread"}, {Name: "TaintToleration"}, {Name: "PodTopologySpread"}, }, @@ -1856,7 +1856,7 @@ func TestPluginsConfigurationCompatibility(t *testing.T) { PreScore: &config.PluginSet{ Enabled: []config.Plugin{ {Name: "TaintToleration"}, - {Name: "DefaultPodTopologySpread"}, + {Name: "SelectorSpread"}, {Name: "InterPodAffinity"}, }, Disabled: []config.Plugin{ @@ -1866,7 +1866,7 @@ func TestPluginsConfigurationCompatibility(t *testing.T) { Score: &config.PluginSet{ Enabled: []config.Plugin{ {Name: "TaintToleration", Weight: 24}, - {Name: "DefaultPodTopologySpread", Weight: 24}, + {Name: "SelectorSpread", Weight: 24}, {Name: "NodePreferAvoidPods", Weight: 24}, {Name: "NodeAffinity", Weight: 24}, {Name: "NodeResourcesLeastAllocated", Weight: 24}, @@ -1913,12 +1913,12 @@ func TestPluginsConfigurationCompatibility(t *testing.T) { }, "PreScorePlugin": { {Name: "TaintToleration"}, - {Name: "DefaultPodTopologySpread"}, + {Name: "SelectorSpread"}, {Name: "InterPodAffinity"}, }, "ScorePlugin": { {Name: "TaintToleration", Weight: 24}, - {Name: "DefaultPodTopologySpread", Weight: 24}, + {Name: "SelectorSpread", Weight: 24}, {Name: "NodePreferAvoidPods", Weight: 24}, {Name: "NodeAffinity", Weight: 24}, {Name: "NodeResourcesLeastAllocated", Weight: 24}, diff --git a/pkg/scheduler/apis/config/v1beta1/defaults.go b/pkg/scheduler/apis/config/v1beta1/defaults.go index defd426f07e..3369e16a3f4 100644 --- a/pkg/scheduler/apis/config/v1beta1/defaults.go +++ b/pkg/scheduler/apis/config/v1beta1/defaults.go @@ -199,7 +199,7 @@ func SetDefaults_VolumeBindingArgs(obj *v1beta1.VolumeBindingArgs) { func SetDefaults_PodTopologySpreadArgs(obj *v1beta1.PodTopologySpreadArgs) { if !feature.DefaultFeatureGate.Enabled(features.DefaultPodTopologySpread) { // When feature is disabled, the default spreading is done by legacy - // DefaultPodTopologySpread plugin. + // SelectorSpread plugin. return } if obj.DefaultConstraints == nil { diff --git a/pkg/scheduler/core/BUILD b/pkg/scheduler/core/BUILD index c415e12dfd2..f5d263232b0 100644 --- a/pkg/scheduler/core/BUILD +++ b/pkg/scheduler/core/BUILD @@ -39,10 +39,10 @@ go_test( deps = [ "//pkg/scheduler/apis/config:go_default_library", "//pkg/scheduler/framework/plugins/defaultbinder:go_default_library", - "//pkg/scheduler/framework/plugins/defaultpodtopologyspread:go_default_library", "//pkg/scheduler/framework/plugins/noderesources:go_default_library", "//pkg/scheduler/framework/plugins/podtopologyspread:go_default_library", "//pkg/scheduler/framework/plugins/queuesort:go_default_library", + "//pkg/scheduler/framework/plugins/selectorspread:go_default_library", "//pkg/scheduler/framework/runtime:go_default_library", "//pkg/scheduler/framework/v1alpha1:go_default_library", "//pkg/scheduler/framework/v1alpha1/fake:go_default_library", diff --git a/pkg/scheduler/core/generic_scheduler_test.go b/pkg/scheduler/core/generic_scheduler_test.go index 4ac535dbb61..c65bf3d64d3 100644 --- a/pkg/scheduler/core/generic_scheduler_test.go +++ b/pkg/scheduler/core/generic_scheduler_test.go @@ -36,10 +36,10 @@ import ( clientsetfake "k8s.io/client-go/kubernetes/fake" schedulerapi "k8s.io/kubernetes/pkg/scheduler/apis/config" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/defaultbinder" - "k8s.io/kubernetes/pkg/scheduler/framework/plugins/defaultpodtopologyspread" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/noderesources" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/podtopologyspread" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/queuesort" + "k8s.io/kubernetes/pkg/scheduler/framework/plugins/selectorspread" frameworkruntime "k8s.io/kubernetes/pkg/scheduler/framework/runtime" framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1" fakeframework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1/fake" @@ -1013,8 +1013,8 @@ func TestZeroRequest(t *testing.T) { st.RegisterQueueSortPlugin(queuesort.Name, queuesort.New), st.RegisterScorePlugin(noderesources.LeastAllocatedName, noderesources.NewLeastAllocated, 1), st.RegisterScorePlugin(noderesources.BalancedAllocationName, noderesources.NewBalancedAllocation, 1), - st.RegisterScorePlugin(defaultpodtopologyspread.Name, defaultpodtopologyspread.New, 1), - st.RegisterPreScorePlugin(defaultpodtopologyspread.Name, defaultpodtopologyspread.New), + st.RegisterScorePlugin(selectorspread.Name, selectorspread.New, 1), + st.RegisterPreScorePlugin(selectorspread.Name, selectorspread.New), st.RegisterBindPlugin(defaultbinder.Name, defaultbinder.New), } fwk, err := st.NewFramework( diff --git a/pkg/scheduler/framework/plugins/BUILD b/pkg/scheduler/framework/plugins/BUILD index a081b290d36..91620cf86fc 100644 --- a/pkg/scheduler/framework/plugins/BUILD +++ b/pkg/scheduler/framework/plugins/BUILD @@ -11,7 +11,6 @@ go_library( deps = [ "//pkg/scheduler/apis/config:go_default_library", "//pkg/scheduler/framework/plugins/defaultbinder:go_default_library", - "//pkg/scheduler/framework/plugins/defaultpodtopologyspread:go_default_library", "//pkg/scheduler/framework/plugins/defaultpreemption:go_default_library", "//pkg/scheduler/framework/plugins/imagelocality:go_default_library", "//pkg/scheduler/framework/plugins/interpodaffinity:go_default_library", @@ -25,6 +24,7 @@ go_library( "//pkg/scheduler/framework/plugins/nodevolumelimits:go_default_library", "//pkg/scheduler/framework/plugins/podtopologyspread:go_default_library", "//pkg/scheduler/framework/plugins/queuesort:go_default_library", + "//pkg/scheduler/framework/plugins/selectorspread:go_default_library", "//pkg/scheduler/framework/plugins/serviceaffinity:go_default_library", "//pkg/scheduler/framework/plugins/tainttoleration:go_default_library", "//pkg/scheduler/framework/plugins/volumebinding:go_default_library", @@ -48,7 +48,6 @@ filegroup( srcs = [ ":package-srcs", "//pkg/scheduler/framework/plugins/defaultbinder:all-srcs", - "//pkg/scheduler/framework/plugins/defaultpodtopologyspread:all-srcs", "//pkg/scheduler/framework/plugins/defaultpreemption:all-srcs", "//pkg/scheduler/framework/plugins/examples:all-srcs", "//pkg/scheduler/framework/plugins/helper:all-srcs", @@ -64,6 +63,7 @@ filegroup( "//pkg/scheduler/framework/plugins/nodevolumelimits:all-srcs", "//pkg/scheduler/framework/plugins/podtopologyspread:all-srcs", "//pkg/scheduler/framework/plugins/queuesort:all-srcs", + "//pkg/scheduler/framework/plugins/selectorspread:all-srcs", "//pkg/scheduler/framework/plugins/serviceaffinity:all-srcs", "//pkg/scheduler/framework/plugins/tainttoleration:all-srcs", "//pkg/scheduler/framework/plugins/volumebinding:all-srcs", diff --git a/pkg/scheduler/framework/plugins/legacy_registry.go b/pkg/scheduler/framework/plugins/legacy_registry.go index 99f3ef97c72..dc2ca2f8684 100644 --- a/pkg/scheduler/framework/plugins/legacy_registry.go +++ b/pkg/scheduler/framework/plugins/legacy_registry.go @@ -21,7 +21,6 @@ import ( "k8s.io/klog/v2" "k8s.io/kubernetes/pkg/scheduler/apis/config" - "k8s.io/kubernetes/pkg/scheduler/framework/plugins/defaultpodtopologyspread" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/imagelocality" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/interpodaffinity" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/nodeaffinity" @@ -33,6 +32,7 @@ import ( "k8s.io/kubernetes/pkg/scheduler/framework/plugins/nodeunschedulable" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/nodevolumelimits" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/podtopologyspread" + "k8s.io/kubernetes/pkg/scheduler/framework/plugins/selectorspread" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/serviceaffinity" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/tainttoleration" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding" @@ -345,8 +345,8 @@ func NewLegacyRegistry() *LegacyRegistry { // Register Priorities. registry.registerPriorityConfigProducer(SelectorSpreadPriority, func(args ConfigProducerArgs) (plugins config.Plugins, pluginConfig []config.PluginConfig) { - plugins.Score = appendToPluginSet(plugins.Score, defaultpodtopologyspread.Name, &args.Weight) - plugins.PreScore = appendToPluginSet(plugins.PreScore, defaultpodtopologyspread.Name, nil) + plugins.Score = appendToPluginSet(plugins.Score, selectorspread.Name, &args.Weight) + plugins.PreScore = appendToPluginSet(plugins.PreScore, selectorspread.Name, nil) return }) registry.registerPriorityConfigProducer(TaintTolerationPriority, diff --git a/pkg/scheduler/framework/plugins/podtopologyspread/scoring_test.go b/pkg/scheduler/framework/plugins/podtopologyspread/scoring_test.go index 3150a815e0a..f951d822d70 100644 --- a/pkg/scheduler/framework/plugins/podtopologyspread/scoring_test.go +++ b/pkg/scheduler/framework/plugins/podtopologyspread/scoring_test.go @@ -735,8 +735,8 @@ func BenchmarkTestPodTopologySpreadScore(b *testing.B) { } // The following test allows to compare PodTopologySpread.Score with -// DefaultPodTopologySpread.Score by using a similar rule. -// See pkg/scheduler/framework/plugins/defaultpodtopologyspread/default_pod_topology_spread_perf_test.go +// SelectorSpread.Score by using a similar rule. +// See pkg/scheduler/framework/plugins/selectorspread/selector_spread_perf_test.go // for the equivalent test. var ( diff --git a/pkg/scheduler/framework/plugins/registry.go b/pkg/scheduler/framework/plugins/registry.go index e009ab8184f..5083f55eeb7 100644 --- a/pkg/scheduler/framework/plugins/registry.go +++ b/pkg/scheduler/framework/plugins/registry.go @@ -18,7 +18,6 @@ package plugins import ( "k8s.io/kubernetes/pkg/scheduler/framework/plugins/defaultbinder" - "k8s.io/kubernetes/pkg/scheduler/framework/plugins/defaultpodtopologyspread" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/defaultpreemption" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/imagelocality" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/interpodaffinity" @@ -32,6 +31,7 @@ import ( "k8s.io/kubernetes/pkg/scheduler/framework/plugins/nodevolumelimits" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/podtopologyspread" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/queuesort" + "k8s.io/kubernetes/pkg/scheduler/framework/plugins/selectorspread" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/serviceaffinity" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/tainttoleration" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding" @@ -45,7 +45,7 @@ import ( // through the WithFrameworkOutOfTreeRegistry option. func NewInTreeRegistry() runtime.Registry { return runtime.Registry{ - defaultpodtopologyspread.Name: defaultpodtopologyspread.New, + selectorspread.Name: selectorspread.New, imagelocality.Name: imagelocality.New, tainttoleration.Name: tainttoleration.New, nodename.Name: nodename.New, diff --git a/pkg/scheduler/framework/plugins/defaultpodtopologyspread/BUILD b/pkg/scheduler/framework/plugins/selectorspread/BUILD similarity index 90% rename from pkg/scheduler/framework/plugins/defaultpodtopologyspread/BUILD rename to pkg/scheduler/framework/plugins/selectorspread/BUILD index 56c0a81a1b0..7d74808ad17 100644 --- a/pkg/scheduler/framework/plugins/defaultpodtopologyspread/BUILD +++ b/pkg/scheduler/framework/plugins/selectorspread/BUILD @@ -2,8 +2,8 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "go_default_library", - srcs = ["default_pod_topology_spread.go"], - importpath = "k8s.io/kubernetes/pkg/scheduler/framework/plugins/defaultpodtopologyspread", + srcs = ["selector_spread.go"], + importpath = "k8s.io/kubernetes/pkg/scheduler/framework/plugins/selectorspread", visibility = ["//visibility:public"], deps = [ "//pkg/scheduler/framework/plugins/helper:go_default_library", @@ -18,8 +18,8 @@ go_library( go_test( name = "go_default_test", srcs = [ - "default_pod_topology_spread_perf_test.go", - "default_pod_topology_spread_test.go", + "selector_spread_perf_test.go", + "selector_spread_test.go", ], embed = [":go_default_library"], deps = [ diff --git a/pkg/scheduler/framework/plugins/defaultpodtopologyspread/default_pod_topology_spread.go b/pkg/scheduler/framework/plugins/selectorspread/selector_spread.go similarity index 82% rename from pkg/scheduler/framework/plugins/defaultpodtopologyspread/default_pod_topology_spread.go rename to pkg/scheduler/framework/plugins/selectorspread/selector_spread.go index a0c122d6102..3f0a4181d17 100644 --- a/pkg/scheduler/framework/plugins/defaultpodtopologyspread/default_pod_topology_spread.go +++ b/pkg/scheduler/framework/plugins/selectorspread/selector_spread.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package defaultpodtopologyspread +package selectorspread import ( "context" @@ -28,18 +28,18 @@ import ( utilnode "k8s.io/kubernetes/pkg/util/node" ) -// DefaultPodTopologySpread is a plugin that calculates selector spread priority. -type DefaultPodTopologySpread struct { +// SelectorSpread is a plugin that calculates selector spread priority. +type SelectorSpread struct { handle framework.FrameworkHandle } -var _ framework.PreScorePlugin = &DefaultPodTopologySpread{} -var _ framework.ScorePlugin = &DefaultPodTopologySpread{} +var _ framework.PreScorePlugin = &SelectorSpread{} +var _ framework.ScorePlugin = &SelectorSpread{} const ( // Name is the name of the plugin used in the plugin registry and configurations. - Name = "DefaultPodTopologySpread" - // preScoreStateKey is the key in CycleState to DefaultPodTopologySpread pre-computed data for Scoring. + Name = "SelectorSpread" + // preScoreStateKey is the key in CycleState to SelectorSpread pre-computed data for Scoring. preScoreStateKey = "PreScore" + Name // When zone information is present, give 2/3 of the weighting to zone spreading, 1/3 to node spreading @@ -48,7 +48,7 @@ const ( ) // Name returns name of the plugin. It is used in logs, etc. -func (pl *DefaultPodTopologySpread) Name() string { +func (pl *SelectorSpread) Name() string { return Name } @@ -63,18 +63,18 @@ func (s *preScoreState) Clone() framework.StateData { return s } -// skipDefaultPodTopologySpread returns true if the pod's TopologySpreadConstraints are specified. +// skipSelectorSpread returns true if the pod's TopologySpreadConstraints are specified. // Note that this doesn't take into account default constraints defined for // the PodTopologySpread plugin. -func skipDefaultPodTopologySpread(pod *v1.Pod) bool { +func skipSelectorSpread(pod *v1.Pod) bool { return len(pod.Spec.TopologySpreadConstraints) != 0 } // Score invoked at the Score extension point. // The "score" returned in this function is the matching number of pods on the `nodeName`, // it is normalized later. -func (pl *DefaultPodTopologySpread) Score(ctx context.Context, state *framework.CycleState, pod *v1.Pod, nodeName string) (int64, *framework.Status) { - if skipDefaultPodTopologySpread(pod) { +func (pl *SelectorSpread) Score(ctx context.Context, state *framework.CycleState, pod *v1.Pod, nodeName string) (int64, *framework.Status) { + if skipSelectorSpread(pod) { return 0, nil } @@ -102,8 +102,8 @@ func (pl *DefaultPodTopologySpread) Score(ctx context.Context, state *framework. // based on the number of existing matching pods on the node // where zone information is included on the nodes, it favors nodes // in zones with fewer existing matching pods. -func (pl *DefaultPodTopologySpread) NormalizeScore(ctx context.Context, state *framework.CycleState, pod *v1.Pod, scores framework.NodeScoreList) *framework.Status { - if skipDefaultPodTopologySpread(pod) { +func (pl *SelectorSpread) NormalizeScore(ctx context.Context, state *framework.CycleState, pod *v1.Pod, scores framework.NodeScoreList) *framework.Status { + if skipSelectorSpread(pod) { return nil } @@ -166,13 +166,13 @@ func (pl *DefaultPodTopologySpread) NormalizeScore(ctx context.Context, state *f } // ScoreExtensions of the Score plugin. -func (pl *DefaultPodTopologySpread) ScoreExtensions() framework.ScoreExtensions { +func (pl *SelectorSpread) ScoreExtensions() framework.ScoreExtensions { return pl } // PreScore builds and writes cycle state used by Score and NormalizeScore. -func (pl *DefaultPodTopologySpread) PreScore(ctx context.Context, cycleState *framework.CycleState, pod *v1.Pod, nodes []*v1.Node) *framework.Status { - if skipDefaultPodTopologySpread(pod) { +func (pl *SelectorSpread) PreScore(ctx context.Context, cycleState *framework.CycleState, pod *v1.Pod, nodes []*v1.Node) *framework.Status { + if skipSelectorSpread(pod) { return nil } var selector labels.Selector @@ -193,7 +193,7 @@ func (pl *DefaultPodTopologySpread) PreScore(ctx context.Context, cycleState *fr // New initializes a new plugin and returns it. func New(_ runtime.Object, handle framework.FrameworkHandle) (framework.Plugin, error) { - return &DefaultPodTopologySpread{ + return &SelectorSpread{ handle: handle, }, nil } diff --git a/pkg/scheduler/framework/plugins/defaultpodtopologyspread/default_pod_topology_spread_perf_test.go b/pkg/scheduler/framework/plugins/selectorspread/selector_spread_perf_test.go similarity index 97% rename from pkg/scheduler/framework/plugins/defaultpodtopologyspread/default_pod_topology_spread_perf_test.go rename to pkg/scheduler/framework/plugins/selectorspread/selector_spread_perf_test.go index bbe3aa7a26e..64b53c9140b 100644 --- a/pkg/scheduler/framework/plugins/defaultpodtopologyspread/default_pod_topology_spread_perf_test.go +++ b/pkg/scheduler/framework/plugins/selectorspread/selector_spread_perf_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package defaultpodtopologyspread +package selectorspread import ( "context" @@ -69,7 +69,7 @@ func BenchmarkTestSelectorSpreadPriority(b *testing.B) { } } fh, _ := runtime.NewFramework(nil, nil, nil, runtime.WithSnapshotSharedLister(snapshot), runtime.WithInformerFactory(informerFactory)) - plugin := &DefaultPodTopologySpread{handle: fh} + plugin := &SelectorSpread{handle: fh} b.ResetTimer() for i := 0; i < b.N; i++ { diff --git a/pkg/scheduler/framework/plugins/defaultpodtopologyspread/default_pod_topology_spread_test.go b/pkg/scheduler/framework/plugins/selectorspread/selector_spread_test.go similarity index 99% rename from pkg/scheduler/framework/plugins/defaultpodtopologyspread/default_pod_topology_spread_test.go rename to pkg/scheduler/framework/plugins/selectorspread/selector_spread_test.go index 8d7febbfcbb..dda5900fe48 100644 --- a/pkg/scheduler/framework/plugins/defaultpodtopologyspread/default_pod_topology_spread_test.go +++ b/pkg/scheduler/framework/plugins/selectorspread/selector_spread_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package defaultpodtopologyspread +package selectorspread import ( "context" @@ -43,7 +43,7 @@ func controllerRef(kind, name, uid string) []metav1.OwnerReference { //} } -func TestDefaultPodTopologySpreadScore(t *testing.T) { +func TestSelectorSpreadScore(t *testing.T) { labels1 := map[string]string{ "foo": "bar", "baz": "blah", @@ -383,7 +383,7 @@ func TestDefaultPodTopologySpreadScore(t *testing.T) { state := framework.NewCycleState() - plugin := &DefaultPodTopologySpread{ + plugin := &SelectorSpread{ handle: fh, } @@ -635,7 +635,7 @@ func TestZoneSelectorSpreadPriority(t *testing.T) { t.Errorf("error creating new framework handle: %+v", err) } - plugin := &DefaultPodTopologySpread{ + plugin := &SelectorSpread{ handle: fh, } diff --git a/test/integration/scheduler/scheduler_test.go b/test/integration/scheduler/scheduler_test.go index f654ea1b4a5..4b0464514f1 100644 --- a/test/integration/scheduler/scheduler_test.go +++ b/test/integration/scheduler/scheduler_test.go @@ -130,7 +130,7 @@ func TestSchedulerCreationFromConfigMap(t *testing.T) { "PreScorePlugin": { {Name: "PodTopologySpread"}, {Name: "InterPodAffinity"}, - {Name: "DefaultPodTopologySpread"}, + {Name: "SelectorSpread"}, {Name: "TaintToleration"}, }, "ScorePlugin": { @@ -141,7 +141,7 @@ func TestSchedulerCreationFromConfigMap(t *testing.T) { {Name: "NodeResourcesLeastAllocated", Weight: 1}, {Name: "NodeAffinity", Weight: 1}, {Name: "NodePreferAvoidPods", Weight: 10000}, - {Name: "DefaultPodTopologySpread", Weight: 1}, + {Name: "SelectorSpread", Weight: 1}, {Name: "TaintToleration", Weight: 1}, }, "ReservePlugin": {{Name: "VolumeBinding"}}, @@ -223,7 +223,7 @@ kind: Policy "PreScorePlugin": { {Name: "PodTopologySpread"}, {Name: "InterPodAffinity"}, - {Name: "DefaultPodTopologySpread"}, + {Name: "SelectorSpread"}, {Name: "TaintToleration"}, }, "ScorePlugin": { @@ -234,7 +234,7 @@ kind: Policy {Name: "NodeResourcesLeastAllocated", Weight: 1}, {Name: "NodeAffinity", Weight: 1}, {Name: "NodePreferAvoidPods", Weight: 10000}, - {Name: "DefaultPodTopologySpread", Weight: 1}, + {Name: "SelectorSpread", Weight: 1}, {Name: "TaintToleration", Weight: 1}, }, "ReservePlugin": {{Name: "VolumeBinding"}},