mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-12-03 04:06:14 +00:00
Add score plugin for NodeResourcesFit
This commit is contained in:
committed by
Abdullah Gharaibeh
parent
06dfe683ce
commit
deb14b995a
@@ -213,13 +213,16 @@ func TestValidateKubeSchedulerConfiguration(t *testing.T) {
|
||||
BindVerb: "bar",
|
||||
})
|
||||
|
||||
badRemovedPlugins1 := validConfig.DeepCopy() // defalt v1beta2
|
||||
badRemovedPlugins1 := validConfig.DeepCopy() // default v1beta2
|
||||
badRemovedPlugins1.Profiles[0].Plugins.Score.Enabled = append(badRemovedPlugins1.Profiles[0].Plugins.Score.Enabled, config.Plugin{Name: "ServiceAffinity", Weight: 2})
|
||||
|
||||
badRemovedPlugins2 := validConfig.DeepCopy()
|
||||
badRemovedPlugins2.APIVersion = "kubescheduler.config.k8s.io/v1beta3" // hypothetical, v1beta3 doesn't exist
|
||||
badRemovedPlugins2.Profiles[0].Plugins.Score.Enabled = append(badRemovedPlugins2.Profiles[0].Plugins.Score.Enabled, config.Plugin{Name: "ServiceAffinity", Weight: 2})
|
||||
|
||||
badRemovedPlugins3 := validConfig.DeepCopy() // default v1beta2
|
||||
badRemovedPlugins3.Profiles[0].Plugins.Score.Enabled = append(badRemovedPlugins3.Profiles[0].Plugins.Score.Enabled, config.Plugin{Name: "NodeResourcesMostAllocated", Weight: 2})
|
||||
|
||||
goodRemovedPlugins1 := validConfig.DeepCopy() // ServiceAffinity is okay in v1beta1.
|
||||
goodRemovedPlugins1.APIVersion = v1beta1.SchemeGroupVersion.String()
|
||||
goodRemovedPlugins1.Profiles[0].Plugins.Score.Enabled = append(goodRemovedPlugins1.Profiles[0].Plugins.Score.Enabled, config.Plugin{Name: "ServiceAffinity", Weight: 2})
|
||||
@@ -227,9 +230,34 @@ func TestValidateKubeSchedulerConfiguration(t *testing.T) {
|
||||
goodRemovedPlugins2 := validConfig.DeepCopy()
|
||||
goodRemovedPlugins2.Profiles[0].Plugins.Score.Enabled = append(goodRemovedPlugins2.Profiles[0].Plugins.Score.Enabled, config.Plugin{Name: "PodTopologySpread", Weight: 2})
|
||||
|
||||
goodRemovedPlugins3 := validConfig.DeepCopy()
|
||||
goodRemovedPlugins3.APIVersion = v1beta1.SchemeGroupVersion.String()
|
||||
goodRemovedPlugins3.Profiles[0].Plugins.Score.Enabled = append(goodRemovedPlugins3.Profiles[0].Plugins.Score.Enabled, config.Plugin{Name: "NodeResourcesMostAllocated", Weight: 2})
|
||||
|
||||
badConflictPlugins1 := validConfig.DeepCopy()
|
||||
badConflictPlugins1.APIVersion = v1beta1.SchemeGroupVersion.String()
|
||||
badConflictPlugins1.Profiles[0].Plugins.Score.Enabled = append(badConflictPlugins1.Profiles[0].Plugins.Score.Enabled, config.Plugin{Name: "NodeResourcesFit", Weight: 2})
|
||||
badConflictPlugins1.Profiles[0].Plugins.Score.Enabled = append(badConflictPlugins1.Profiles[0].Plugins.Score.Enabled, config.Plugin{Name: "NodeResourcesLeastAllocated", Weight: 2})
|
||||
badConflictPlugins1.Profiles[0].Plugins.Score.Enabled = append(badConflictPlugins1.Profiles[0].Plugins.Score.Enabled, config.Plugin{Name: "NodeResourcesMostAllocated", Weight: 2})
|
||||
badConflictPlugins1.Profiles[0].Plugins.Score.Enabled = append(badConflictPlugins1.Profiles[0].Plugins.Score.Enabled, config.Plugin{Name: "RequestedToCapacityRatio", Weight: 2})
|
||||
|
||||
goodConflictPlugins1 := validConfig.DeepCopy()
|
||||
goodConflictPlugins1.APIVersion = v1beta1.SchemeGroupVersion.String()
|
||||
goodConflictPlugins1.Profiles[0].Plugins.Score.Enabled = append(goodConflictPlugins1.Profiles[0].Plugins.Score.Enabled, config.Plugin{Name: "NodeResourcesLeastAllocated", Weight: 2})
|
||||
goodConflictPlugins1.Profiles[0].Plugins.Score.Enabled = append(goodConflictPlugins1.Profiles[0].Plugins.Score.Enabled, config.Plugin{Name: "NodeResourcesMostAllocated", Weight: 2})
|
||||
goodConflictPlugins1.Profiles[0].Plugins.Score.Enabled = append(goodConflictPlugins1.Profiles[0].Plugins.Score.Enabled, config.Plugin{Name: "RequestedToCapacityRatio", Weight: 2})
|
||||
|
||||
goodConflictPlugins2 := validConfig.DeepCopy()
|
||||
goodConflictPlugins2.APIVersion = v1beta1.SchemeGroupVersion.String()
|
||||
goodConflictPlugins2.Profiles[0].Plugins.Filter.Enabled = append(goodConflictPlugins2.Profiles[0].Plugins.Filter.Enabled, config.Plugin{Name: "NodeResourcesFit", Weight: 2})
|
||||
goodConflictPlugins2.Profiles[0].Plugins.Score.Enabled = append(goodConflictPlugins2.Profiles[0].Plugins.Score.Enabled, config.Plugin{Name: "NodeResourcesLeastAllocated", Weight: 2})
|
||||
goodConflictPlugins2.Profiles[0].Plugins.Score.Enabled = append(goodConflictPlugins2.Profiles[0].Plugins.Score.Enabled, config.Plugin{Name: "NodeResourcesMostAllocated", Weight: 2})
|
||||
goodConflictPlugins2.Profiles[0].Plugins.Score.Enabled = append(goodConflictPlugins2.Profiles[0].Plugins.Score.Enabled, config.Plugin{Name: "RequestedToCapacityRatio", Weight: 2})
|
||||
|
||||
scenarios := map[string]struct {
|
||||
expectedToFail bool
|
||||
config *config.KubeSchedulerConfiguration
|
||||
errorString string
|
||||
}{
|
||||
"good": {
|
||||
expectedToFail: false,
|
||||
@@ -327,6 +355,10 @@ func TestValidateKubeSchedulerConfiguration(t *testing.T) {
|
||||
expectedToFail: true,
|
||||
config: badRemovedPlugins2,
|
||||
},
|
||||
"bad-removed-plugins-3": {
|
||||
expectedToFail: true,
|
||||
config: badRemovedPlugins3,
|
||||
},
|
||||
"good-removed-plugins-1": {
|
||||
expectedToFail: false,
|
||||
config: goodRemovedPlugins1,
|
||||
@@ -335,6 +367,23 @@ func TestValidateKubeSchedulerConfiguration(t *testing.T) {
|
||||
expectedToFail: false,
|
||||
config: goodRemovedPlugins2,
|
||||
},
|
||||
"good-removed-plugins-3": {
|
||||
expectedToFail: false,
|
||||
config: goodRemovedPlugins3,
|
||||
},
|
||||
"bad-conflict-plugins-1": {
|
||||
expectedToFail: true,
|
||||
config: badConflictPlugins1,
|
||||
errorString: "profiles[0].plugins.score.enabled[0]: Invalid value: \"NodeResourcesFit\": was conflict with [\"NodeResourcesLeastAllocated\" \"NodeResourcesMostAllocated\" \"RequestedToCapacityRatio\"] in version \"kubescheduler.config.k8s.io/v1beta1\" (KubeSchedulerConfiguration is version \"kubescheduler.config.k8s.io/v1beta1\")",
|
||||
},
|
||||
"good-conflict-plugins-1": {
|
||||
expectedToFail: false,
|
||||
config: goodConflictPlugins1,
|
||||
},
|
||||
"good-conflict-plugins-2": {
|
||||
expectedToFail: false,
|
||||
config: goodConflictPlugins2,
|
||||
},
|
||||
}
|
||||
|
||||
for name, scenario := range scenarios {
|
||||
@@ -346,6 +395,11 @@ func TestValidateKubeSchedulerConfiguration(t *testing.T) {
|
||||
if errs != nil && !scenario.expectedToFail {
|
||||
t.Errorf("Unexpected failure: %+v", errs)
|
||||
}
|
||||
fmt.Println(errs)
|
||||
|
||||
if errs != nil && scenario.errorString != "" && errs.Error() != scenario.errorString {
|
||||
t.Errorf("Unexpected error string\n want:\t%s\n got:\t%s", scenario.errorString, errs.Error())
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user