feat: graduate DefaultPodTopologySpread to GA
Co-authored-by: drfish <drfish.me@gmail.com> Signed-off-by: kerthcet <kerthcet@gmail.com>
This commit is contained in:
		| @@ -39,7 +39,6 @@ import ( | |||||||
| 	"k8s.io/kubernetes/pkg/features" | 	"k8s.io/kubernetes/pkg/features" | ||||||
| 	"k8s.io/kubernetes/pkg/scheduler/apis/config" | 	"k8s.io/kubernetes/pkg/scheduler/apis/config" | ||||||
| 	"k8s.io/kubernetes/pkg/scheduler/apis/config/testing/defaults" | 	"k8s.io/kubernetes/pkg/scheduler/apis/config/testing/defaults" | ||||||
| 	"k8s.io/kubernetes/pkg/scheduler/framework/plugins/names" |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestSetup(t *testing.T) { | func TestSetup(t *testing.T) { | ||||||
| @@ -217,10 +216,10 @@ leaderElection: | |||||||
| 		wantLeaderElection *componentbaseconfig.LeaderElectionConfiguration | 		wantLeaderElection *componentbaseconfig.LeaderElectionConfiguration | ||||||
| 	}{ | 	}{ | ||||||
| 		{ | 		{ | ||||||
| 			name: "default config with an alpha feature enabled and an beta feature disabled", | 			name: "default config with an alpha feature enabled", | ||||||
| 			flags: []string{ | 			flags: []string{ | ||||||
| 				"--kubeconfig", configKubeconfig, | 				"--kubeconfig", configKubeconfig, | ||||||
| 				"--feature-gates=VolumeCapacityPriority=true,DefaultPodTopologySpread=false", | 				"--feature-gates=VolumeCapacityPriority=true", | ||||||
| 			}, | 			}, | ||||||
| 			wantPlugins: map[string]*config.Plugins{ | 			wantPlugins: map[string]*config.Plugins{ | ||||||
| 				"default-scheduler": func() *config.Plugins { | 				"default-scheduler": func() *config.Plugins { | ||||||
| @@ -235,17 +234,11 @@ leaderElection: | |||||||
| 						PreBind:    defaults.ExpandedPluginsV1beta3.PreBind, | 						PreBind:    defaults.ExpandedPluginsV1beta3.PreBind, | ||||||
| 						Reserve:    defaults.ExpandedPluginsV1beta3.Reserve, | 						Reserve:    defaults.ExpandedPluginsV1beta3.Reserve, | ||||||
| 					} | 					} | ||||||
| 					plugins.PreScore.Enabled = append(plugins.PreScore.Enabled, config.Plugin{Name: names.SelectorSpread, Weight: 0}) |  | ||||||
| 					plugins.Score.Enabled = append( |  | ||||||
| 						plugins.Score.Enabled, |  | ||||||
| 						config.Plugin{Name: names.SelectorSpread, Weight: 1}, |  | ||||||
| 					) |  | ||||||
| 					return plugins | 					return plugins | ||||||
| 				}(), | 				}(), | ||||||
| 			}, | 			}, | ||||||
| 			restoreFeatures: map[featuregate.Feature]bool{ | 			restoreFeatures: map[featuregate.Feature]bool{ | ||||||
| 				features.VolumeCapacityPriority:   false, | 				features.VolumeCapacityPriority: false, | ||||||
| 				features.DefaultPodTopologySpread: true, |  | ||||||
| 			}, | 			}, | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
|   | |||||||
| @@ -888,7 +888,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS | |||||||
| 	DaemonSetUpdateSurge:                           {Default: true, PreRelease: featuregate.Beta},                    // on by default in 1.22 | 	DaemonSetUpdateSurge:                           {Default: true, PreRelease: featuregate.Beta},                    // on by default in 1.22 | ||||||
| 	DownwardAPIHugePages:                           {Default: true, PreRelease: featuregate.Beta},                    // on by default in 1.22 | 	DownwardAPIHugePages:                           {Default: true, PreRelease: featuregate.Beta},                    // on by default in 1.22 | ||||||
| 	AnyVolumeDataSource:                            {Default: false, PreRelease: featuregate.Alpha}, | 	AnyVolumeDataSource:                            {Default: false, PreRelease: featuregate.Alpha}, | ||||||
| 	DefaultPodTopologySpread:                       {Default: true, PreRelease: featuregate.Beta}, | 	DefaultPodTopologySpread:                       {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.26 | ||||||
| 	WinOverlay:                                     {Default: true, PreRelease: featuregate.Beta}, | 	WinOverlay:                                     {Default: true, PreRelease: featuregate.Beta}, | ||||||
| 	WinDSR:                                         {Default: false, PreRelease: featuregate.Alpha}, | 	WinDSR:                                         {Default: false, PreRelease: featuregate.Alpha}, | ||||||
| 	DisableAcceleratorUsageMetrics:                 {Default: true, PreRelease: featuregate.Beta}, | 	DisableAcceleratorUsageMetrics:                 {Default: true, PreRelease: featuregate.Beta}, | ||||||
|   | |||||||
| @@ -105,8 +105,7 @@ type PodTopologySpreadArgs struct { | |||||||
| 	//   Nodes and Zones. | 	//   Nodes and Zones. | ||||||
| 	// - "List": Use constraints defined in .defaultConstraints. | 	// - "List": Use constraints defined in .defaultConstraints. | ||||||
| 	// | 	// | ||||||
| 	// Defaults to "List" if feature gate DefaultPodTopologySpread is disabled | 	// Defaults to "System". | ||||||
| 	// and to "System" if enabled. |  | ||||||
| 	// +optional | 	// +optional | ||||||
| 	DefaultingType PodTopologySpreadConstraintsDefaulting | 	DefaultingType PodTopologySpreadConstraintsDefaulting | ||||||
| } | } | ||||||
|   | |||||||
| @@ -116,16 +116,6 @@ func applyFeatureGates(config *v1beta2.Plugins) { | |||||||
| 	if utilfeature.DefaultFeatureGate.Enabled(features.VolumeCapacityPriority) { | 	if utilfeature.DefaultFeatureGate.Enabled(features.VolumeCapacityPriority) { | ||||||
| 		config.Score.Enabled = append(config.Score.Enabled, v1beta2.Plugin{Name: names.VolumeBinding, Weight: pointer.Int32Ptr(1)}) | 		config.Score.Enabled = append(config.Score.Enabled, v1beta2.Plugin{Name: names.VolumeBinding, Weight: pointer.Int32Ptr(1)}) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if !utilfeature.DefaultFeatureGate.Enabled(features.DefaultPodTopologySpread) { |  | ||||||
| 		// When feature is enabled, the default spreading is done by |  | ||||||
| 		// PodTopologySpread plugin, which is enabled by default. |  | ||||||
| 		klog.InfoS("Registering SelectorSpread plugin") |  | ||||||
| 		s := v1beta2.Plugin{Name: names.SelectorSpread} |  | ||||||
| 		config.PreScore.Enabled = append(config.PreScore.Enabled, s) |  | ||||||
| 		s.Weight = pointer.Int32Ptr(1) |  | ||||||
| 		config.Score.Enabled = append(config.Score.Enabled, s) |  | ||||||
| 	} |  | ||||||
| } | } | ||||||
|  |  | ||||||
| // mergePlugins merges the custom set into the given default one, handling disabled sets. | // mergePlugins merges the custom set into the given default one, handling disabled sets. | ||||||
|   | |||||||
| @@ -24,7 +24,6 @@ import ( | |||||||
| 	"k8s.io/component-base/featuregate" | 	"k8s.io/component-base/featuregate" | ||||||
| 	featuregatetesting "k8s.io/component-base/featuregate/testing" | 	featuregatetesting "k8s.io/component-base/featuregate/testing" | ||||||
| 	"k8s.io/kube-scheduler/config/v1beta2" | 	"k8s.io/kube-scheduler/config/v1beta2" | ||||||
| 	"k8s.io/kubernetes/pkg/features" |  | ||||||
| 	"k8s.io/kubernetes/pkg/scheduler/framework/plugins/names" | 	"k8s.io/kubernetes/pkg/scheduler/framework/plugins/names" | ||||||
| 	"k8s.io/utils/pointer" | 	"k8s.io/utils/pointer" | ||||||
| ) | ) | ||||||
| @@ -114,90 +113,6 @@ func TestApplyFeatureGates(t *testing.T) { | |||||||
| 				}, | 				}, | ||||||
| 			}, | 			}, | ||||||
| 		}, | 		}, | ||||||
| 		{ |  | ||||||
| 			name: "DefaultPodTopologySpread disabled", |  | ||||||
| 			features: map[featuregate.Feature]bool{ |  | ||||||
| 				features.DefaultPodTopologySpread: false, |  | ||||||
| 			}, |  | ||||||
| 			wantConfig: &v1beta2.Plugins{ |  | ||||||
| 				QueueSort: v1beta2.PluginSet{ |  | ||||||
| 					Enabled: []v1beta2.Plugin{ |  | ||||||
| 						{Name: names.PrioritySort}, |  | ||||||
| 					}, |  | ||||||
| 				}, |  | ||||||
| 				PreFilter: v1beta2.PluginSet{ |  | ||||||
| 					Enabled: []v1beta2.Plugin{ |  | ||||||
| 						{Name: names.NodeResourcesFit}, |  | ||||||
| 						{Name: names.NodePorts}, |  | ||||||
| 						{Name: names.VolumeRestrictions}, |  | ||||||
| 						{Name: names.PodTopologySpread}, |  | ||||||
| 						{Name: names.InterPodAffinity}, |  | ||||||
| 						{Name: names.VolumeBinding}, |  | ||||||
| 						{Name: names.NodeAffinity}, |  | ||||||
| 					}, |  | ||||||
| 				}, |  | ||||||
| 				Filter: v1beta2.PluginSet{ |  | ||||||
| 					Enabled: []v1beta2.Plugin{ |  | ||||||
| 						{Name: names.NodeUnschedulable}, |  | ||||||
| 						{Name: names.NodeName}, |  | ||||||
| 						{Name: names.TaintToleration}, |  | ||||||
| 						{Name: names.NodeAffinity}, |  | ||||||
| 						{Name: names.NodePorts}, |  | ||||||
| 						{Name: names.NodeResourcesFit}, |  | ||||||
| 						{Name: names.VolumeRestrictions}, |  | ||||||
| 						{Name: names.EBSLimits}, |  | ||||||
| 						{Name: names.GCEPDLimits}, |  | ||||||
| 						{Name: names.NodeVolumeLimits}, |  | ||||||
| 						{Name: names.AzureDiskLimits}, |  | ||||||
| 						{Name: names.VolumeBinding}, |  | ||||||
| 						{Name: names.VolumeZone}, |  | ||||||
| 						{Name: names.PodTopologySpread}, |  | ||||||
| 						{Name: names.InterPodAffinity}, |  | ||||||
| 					}, |  | ||||||
| 				}, |  | ||||||
| 				PostFilter: v1beta2.PluginSet{ |  | ||||||
| 					Enabled: []v1beta2.Plugin{ |  | ||||||
| 						{Name: names.DefaultPreemption}, |  | ||||||
| 					}, |  | ||||||
| 				}, |  | ||||||
| 				PreScore: v1beta2.PluginSet{ |  | ||||||
| 					Enabled: []v1beta2.Plugin{ |  | ||||||
| 						{Name: names.InterPodAffinity}, |  | ||||||
| 						{Name: names.PodTopologySpread}, |  | ||||||
| 						{Name: names.TaintToleration}, |  | ||||||
| 						{Name: names.NodeAffinity}, |  | ||||||
| 						{Name: names.SelectorSpread}, |  | ||||||
| 					}, |  | ||||||
| 				}, |  | ||||||
| 				Score: v1beta2.PluginSet{ |  | ||||||
| 					Enabled: []v1beta2.Plugin{ |  | ||||||
| 						{Name: names.NodeResourcesBalancedAllocation, Weight: pointer.Int32Ptr(1)}, |  | ||||||
| 						{Name: names.ImageLocality, Weight: pointer.Int32Ptr(1)}, |  | ||||||
| 						{Name: names.InterPodAffinity, Weight: pointer.Int32Ptr(1)}, |  | ||||||
| 						{Name: names.NodeResourcesFit, Weight: pointer.Int32Ptr(1)}, |  | ||||||
| 						{Name: names.NodeAffinity, Weight: pointer.Int32Ptr(1)}, |  | ||||||
| 						{Name: names.PodTopologySpread, Weight: pointer.Int32Ptr(2)}, |  | ||||||
| 						{Name: names.TaintToleration, Weight: pointer.Int32Ptr(1)}, |  | ||||||
| 						{Name: names.SelectorSpread, Weight: pointer.Int32Ptr(1)}, |  | ||||||
| 					}, |  | ||||||
| 				}, |  | ||||||
| 				Reserve: v1beta2.PluginSet{ |  | ||||||
| 					Enabled: []v1beta2.Plugin{ |  | ||||||
| 						{Name: names.VolumeBinding}, |  | ||||||
| 					}, |  | ||||||
| 				}, |  | ||||||
| 				PreBind: v1beta2.PluginSet{ |  | ||||||
| 					Enabled: []v1beta2.Plugin{ |  | ||||||
| 						{Name: names.VolumeBinding}, |  | ||||||
| 					}, |  | ||||||
| 				}, |  | ||||||
| 				Bind: v1beta2.PluginSet{ |  | ||||||
| 					Enabled: []v1beta2.Plugin{ |  | ||||||
| 						{Name: names.DefaultBinder}, |  | ||||||
| 					}, |  | ||||||
| 				}, |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	for _, test := range tests { | 	for _, test := range tests { | ||||||
|   | |||||||
| @@ -227,14 +227,8 @@ func SetDefaults_NodeResourcesBalancedAllocationArgs(obj *v1beta2.NodeResourcesB | |||||||
| } | } | ||||||
|  |  | ||||||
| func SetDefaults_PodTopologySpreadArgs(obj *v1beta2.PodTopologySpreadArgs) { | func SetDefaults_PodTopologySpreadArgs(obj *v1beta2.PodTopologySpreadArgs) { | ||||||
| 	if feature.DefaultFeatureGate.Enabled(features.DefaultPodTopologySpread) { |  | ||||||
| 		if obj.DefaultingType == "" { |  | ||||||
| 			obj.DefaultingType = v1beta2.SystemDefaulting |  | ||||||
| 		} |  | ||||||
| 		return |  | ||||||
| 	} |  | ||||||
| 	if obj.DefaultingType == "" { | 	if obj.DefaultingType == "" { | ||||||
| 		obj.DefaultingType = v1beta2.ListDefaulting | 		obj.DefaultingType = v1beta2.SystemDefaulting | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -586,16 +586,6 @@ func TestPluginArgsDefaults(t *testing.T) { | |||||||
| 				DefaultingType: v1beta2.SystemDefaulting, | 				DefaultingType: v1beta2.SystemDefaulting, | ||||||
| 			}, | 			}, | ||||||
| 		}, | 		}, | ||||||
| 		{ |  | ||||||
| 			name: "PodTopologySpreadArgs empty, DefaultPodTopologySpread feature disabled", |  | ||||||
| 			features: map[featuregate.Feature]bool{ |  | ||||||
| 				features.DefaultPodTopologySpread: false, |  | ||||||
| 			}, |  | ||||||
| 			in: &v1beta2.PodTopologySpreadArgs{}, |  | ||||||
| 			want: &v1beta2.PodTopologySpreadArgs{ |  | ||||||
| 				DefaultingType: v1beta2.ListDefaulting, |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 		{ | 		{ | ||||||
| 			name: "NodeResourcesFitArgs not set", | 			name: "NodeResourcesFitArgs not set", | ||||||
| 			in:   &v1beta2.NodeResourcesFitArgs{}, | 			in:   &v1beta2.NodeResourcesFitArgs{}, | ||||||
|   | |||||||
| @@ -18,10 +18,8 @@ package v1beta3 | |||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"k8s.io/apimachinery/pkg/util/sets" | 	"k8s.io/apimachinery/pkg/util/sets" | ||||||
| 	utilfeature "k8s.io/apiserver/pkg/util/feature" |  | ||||||
| 	"k8s.io/klog/v2" | 	"k8s.io/klog/v2" | ||||||
| 	"k8s.io/kube-scheduler/config/v1beta3" | 	"k8s.io/kube-scheduler/config/v1beta3" | ||||||
| 	"k8s.io/kubernetes/pkg/features" |  | ||||||
| 	"k8s.io/kubernetes/pkg/scheduler/framework/plugins/names" | 	"k8s.io/kubernetes/pkg/scheduler/framework/plugins/names" | ||||||
| 	"k8s.io/utils/pointer" | 	"k8s.io/utils/pointer" | ||||||
| ) | ) | ||||||
| @@ -54,21 +52,10 @@ func getDefaultPlugins() *v1beta3.Plugins { | |||||||
| 			}, | 			}, | ||||||
| 		}, | 		}, | ||||||
| 	} | 	} | ||||||
| 	applyFeatureGates(plugins) |  | ||||||
|  |  | ||||||
| 	return plugins | 	return plugins | ||||||
| } | } | ||||||
|  |  | ||||||
| func applyFeatureGates(config *v1beta3.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.InfoS("Registering SelectorSpread plugin") |  | ||||||
| 		s := v1beta3.Plugin{Name: names.SelectorSpread, Weight: pointer.Int32Ptr(1)} |  | ||||||
| 		config.MultiPoint.Enabled = append(config.MultiPoint.Enabled, s) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // mergePlugins merges the custom set into the given default one, handling disabled sets. | // mergePlugins merges the custom set into the given default one, handling disabled sets. | ||||||
| func mergePlugins(defaultPlugins, customPlugins *v1beta3.Plugins) *v1beta3.Plugins { | func mergePlugins(defaultPlugins, customPlugins *v1beta3.Plugins) *v1beta3.Plugins { | ||||||
| 	if customPlugins == nil { | 	if customPlugins == nil { | ||||||
|   | |||||||
| @@ -24,7 +24,6 @@ import ( | |||||||
| 	"k8s.io/apiserver/pkg/util/feature" | 	"k8s.io/apiserver/pkg/util/feature" | ||||||
| 	"k8s.io/component-base/featuregate" | 	"k8s.io/component-base/featuregate" | ||||||
| 	featuregatetesting "k8s.io/component-base/featuregate/testing" | 	featuregatetesting "k8s.io/component-base/featuregate/testing" | ||||||
| 	"k8s.io/kubernetes/pkg/features" |  | ||||||
| 	"k8s.io/kubernetes/pkg/scheduler/framework/plugins/names" | 	"k8s.io/kubernetes/pkg/scheduler/framework/plugins/names" | ||||||
| 	"k8s.io/utils/pointer" | 	"k8s.io/utils/pointer" | ||||||
| ) | ) | ||||||
| @@ -64,39 +63,6 @@ func TestApplyFeatureGates(t *testing.T) { | |||||||
| 				}, | 				}, | ||||||
| 			}, | 			}, | ||||||
| 		}, | 		}, | ||||||
| 		{ |  | ||||||
| 			name: "DefaultPodTopologySpread disabled", |  | ||||||
| 			features: map[featuregate.Feature]bool{ |  | ||||||
| 				features.DefaultPodTopologySpread: false, |  | ||||||
| 			}, |  | ||||||
| 			wantConfig: &v1beta3.Plugins{ |  | ||||||
| 				MultiPoint: v1beta3.PluginSet{ |  | ||||||
| 					Enabled: []v1beta3.Plugin{ |  | ||||||
| 						{Name: names.PrioritySort}, |  | ||||||
| 						{Name: names.NodeUnschedulable}, |  | ||||||
| 						{Name: names.NodeName}, |  | ||||||
| 						{Name: names.TaintToleration, Weight: pointer.Int32(3)}, |  | ||||||
| 						{Name: names.NodeAffinity, Weight: pointer.Int32(2)}, |  | ||||||
| 						{Name: names.NodePorts}, |  | ||||||
| 						{Name: names.NodeResourcesFit, Weight: pointer.Int32(1)}, |  | ||||||
| 						{Name: names.VolumeRestrictions}, |  | ||||||
| 						{Name: names.EBSLimits}, |  | ||||||
| 						{Name: names.GCEPDLimits}, |  | ||||||
| 						{Name: names.NodeVolumeLimits}, |  | ||||||
| 						{Name: names.AzureDiskLimits}, |  | ||||||
| 						{Name: names.VolumeBinding}, |  | ||||||
| 						{Name: names.VolumeZone}, |  | ||||||
| 						{Name: names.PodTopologySpread, Weight: pointer.Int32(2)}, |  | ||||||
| 						{Name: names.InterPodAffinity, Weight: pointer.Int32(2)}, |  | ||||||
| 						{Name: names.DefaultPreemption}, |  | ||||||
| 						{Name: names.NodeResourcesBalancedAllocation, Weight: pointer.Int32(1)}, |  | ||||||
| 						{Name: names.ImageLocality, Weight: pointer.Int32(1)}, |  | ||||||
| 						{Name: names.DefaultBinder}, |  | ||||||
| 						{Name: names.SelectorSpread, Weight: pointer.Int32(1)}, |  | ||||||
| 					}, |  | ||||||
| 				}, |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	for _, test := range tests { | 	for _, test := range tests { | ||||||
|   | |||||||
| @@ -227,14 +227,8 @@ func SetDefaults_NodeResourcesBalancedAllocationArgs(obj *v1beta3.NodeResourcesB | |||||||
| } | } | ||||||
|  |  | ||||||
| func SetDefaults_PodTopologySpreadArgs(obj *v1beta3.PodTopologySpreadArgs) { | func SetDefaults_PodTopologySpreadArgs(obj *v1beta3.PodTopologySpreadArgs) { | ||||||
| 	if feature.DefaultFeatureGate.Enabled(features.DefaultPodTopologySpread) { |  | ||||||
| 		if obj.DefaultingType == "" { |  | ||||||
| 			obj.DefaultingType = v1beta3.SystemDefaulting |  | ||||||
| 		} |  | ||||||
| 		return |  | ||||||
| 	} |  | ||||||
| 	if obj.DefaultingType == "" { | 	if obj.DefaultingType == "" { | ||||||
| 		obj.DefaultingType = v1beta3.ListDefaulting | 		obj.DefaultingType = v1beta3.SystemDefaulting | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -581,16 +581,6 @@ func TestPluginArgsDefaults(t *testing.T) { | |||||||
| 				DefaultingType: v1beta3.SystemDefaulting, | 				DefaultingType: v1beta3.SystemDefaulting, | ||||||
| 			}, | 			}, | ||||||
| 		}, | 		}, | ||||||
| 		{ |  | ||||||
| 			name: "PodTopologySpreadArgs empty, DefaultPodTopologySpread feature disabled", |  | ||||||
| 			features: map[featuregate.Feature]bool{ |  | ||||||
| 				features.DefaultPodTopologySpread: false, |  | ||||||
| 			}, |  | ||||||
| 			in: &v1beta3.PodTopologySpreadArgs{}, |  | ||||||
| 			want: &v1beta3.PodTopologySpreadArgs{ |  | ||||||
| 				DefaultingType: v1beta3.ListDefaulting, |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 		{ | 		{ | ||||||
| 			name: "NodeResourcesFitArgs not set", | 			name: "NodeResourcesFitArgs not set", | ||||||
| 			in:   &v1beta3.NodeResourcesFitArgs{}, | 			in:   &v1beta3.NodeResourcesFitArgs{}, | ||||||
|   | |||||||
| @@ -110,8 +110,7 @@ type PodTopologySpreadArgs struct { | |||||||
| 	//   Nodes and Zones. | 	//   Nodes and Zones. | ||||||
| 	// - "List": Use constraints defined in .defaultConstraints. | 	// - "List": Use constraints defined in .defaultConstraints. | ||||||
| 	// | 	// | ||||||
| 	// Defaults to "List" if feature gate DefaultPodTopologySpread is disabled | 	// Defaults to "System". | ||||||
| 	// and to "System" if enabled. |  | ||||||
| 	// +optional | 	// +optional | ||||||
| 	DefaultingType PodTopologySpreadConstraintsDefaulting `json:"defaultingType,omitempty"` | 	DefaultingType PodTopologySpreadConstraintsDefaulting `json:"defaultingType,omitempty"` | ||||||
| } | } | ||||||
|   | |||||||
| @@ -110,8 +110,7 @@ type PodTopologySpreadArgs struct { | |||||||
| 	//   Nodes and Zones. | 	//   Nodes and Zones. | ||||||
| 	// - "List": Use constraints defined in .defaultConstraints. | 	// - "List": Use constraints defined in .defaultConstraints. | ||||||
| 	// | 	// | ||||||
| 	// Defaults to "List" if feature gate DefaultPodTopologySpread is disabled | 	// Defaults to "System". | ||||||
| 	// and to "System" if enabled. |  | ||||||
| 	// +optional | 	// +optional | ||||||
| 	DefaultingType PodTopologySpreadConstraintsDefaulting `json:"defaultingType,omitempty"` | 	DefaultingType PodTopologySpreadConstraintsDefaulting `json:"defaultingType,omitempty"` | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 kerthcet
					kerthcet