mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-21 19:01:49 +00:00
Remove BindTimeoutSeconds from KubeSchedulerConfiguration
This commit is contained in:
parent
367f75e203
commit
1ff09c0934
@ -247,7 +247,6 @@ profiles:
|
|||||||
}
|
}
|
||||||
|
|
||||||
defaultSource := "DefaultProvider"
|
defaultSource := "DefaultProvider"
|
||||||
defaultBindTimeoutSeconds := int64(600)
|
|
||||||
defaultPodInitialBackoffSeconds := int64(1)
|
defaultPodInitialBackoffSeconds := int64(1)
|
||||||
defaultPodMaxBackoffSeconds := int64(10)
|
defaultPodMaxBackoffSeconds := int64(10)
|
||||||
defaultPercentageOfNodesToScore := int32(0)
|
defaultPercentageOfNodesToScore := int32(0)
|
||||||
@ -320,7 +319,6 @@ profiles:
|
|||||||
ContentType: "application/vnd.kubernetes.protobuf",
|
ContentType: "application/vnd.kubernetes.protobuf",
|
||||||
},
|
},
|
||||||
PercentageOfNodesToScore: defaultPercentageOfNodesToScore,
|
PercentageOfNodesToScore: defaultPercentageOfNodesToScore,
|
||||||
BindTimeoutSeconds: defaultBindTimeoutSeconds,
|
|
||||||
PodInitialBackoffSeconds: defaultPodInitialBackoffSeconds,
|
PodInitialBackoffSeconds: defaultPodInitialBackoffSeconds,
|
||||||
PodMaxBackoffSeconds: defaultPodMaxBackoffSeconds,
|
PodMaxBackoffSeconds: defaultPodMaxBackoffSeconds,
|
||||||
Profiles: []kubeschedulerconfig.KubeSchedulerProfile{
|
Profiles: []kubeschedulerconfig.KubeSchedulerProfile{
|
||||||
@ -410,7 +408,6 @@ profiles:
|
|||||||
ContentType: "application/vnd.kubernetes.protobuf",
|
ContentType: "application/vnd.kubernetes.protobuf",
|
||||||
},
|
},
|
||||||
PercentageOfNodesToScore: defaultPercentageOfNodesToScore,
|
PercentageOfNodesToScore: defaultPercentageOfNodesToScore,
|
||||||
BindTimeoutSeconds: defaultBindTimeoutSeconds,
|
|
||||||
PodInitialBackoffSeconds: defaultPodInitialBackoffSeconds,
|
PodInitialBackoffSeconds: defaultPodInitialBackoffSeconds,
|
||||||
PodMaxBackoffSeconds: defaultPodMaxBackoffSeconds,
|
PodMaxBackoffSeconds: defaultPodMaxBackoffSeconds,
|
||||||
Profiles: []kubeschedulerconfig.KubeSchedulerProfile{
|
Profiles: []kubeschedulerconfig.KubeSchedulerProfile{
|
||||||
@ -474,7 +471,6 @@ profiles:
|
|||||||
ContentType: "application/vnd.kubernetes.protobuf",
|
ContentType: "application/vnd.kubernetes.protobuf",
|
||||||
},
|
},
|
||||||
PercentageOfNodesToScore: defaultPercentageOfNodesToScore,
|
PercentageOfNodesToScore: defaultPercentageOfNodesToScore,
|
||||||
BindTimeoutSeconds: defaultBindTimeoutSeconds,
|
|
||||||
PodInitialBackoffSeconds: defaultPodInitialBackoffSeconds,
|
PodInitialBackoffSeconds: defaultPodInitialBackoffSeconds,
|
||||||
PodMaxBackoffSeconds: defaultPodMaxBackoffSeconds,
|
PodMaxBackoffSeconds: defaultPodMaxBackoffSeconds,
|
||||||
Profiles: []kubeschedulerconfig.KubeSchedulerProfile{
|
Profiles: []kubeschedulerconfig.KubeSchedulerProfile{
|
||||||
@ -513,7 +509,6 @@ profiles:
|
|||||||
ContentType: "application/vnd.kubernetes.protobuf",
|
ContentType: "application/vnd.kubernetes.protobuf",
|
||||||
},
|
},
|
||||||
PercentageOfNodesToScore: defaultPercentageOfNodesToScore,
|
PercentageOfNodesToScore: defaultPercentageOfNodesToScore,
|
||||||
BindTimeoutSeconds: defaultBindTimeoutSeconds,
|
|
||||||
PodInitialBackoffSeconds: defaultPodInitialBackoffSeconds,
|
PodInitialBackoffSeconds: defaultPodInitialBackoffSeconds,
|
||||||
PodMaxBackoffSeconds: defaultPodMaxBackoffSeconds,
|
PodMaxBackoffSeconds: defaultPodMaxBackoffSeconds,
|
||||||
Profiles: []kubeschedulerconfig.KubeSchedulerProfile{
|
Profiles: []kubeschedulerconfig.KubeSchedulerProfile{
|
||||||
@ -587,7 +582,6 @@ profiles:
|
|||||||
ContentType: "application/vnd.kubernetes.protobuf",
|
ContentType: "application/vnd.kubernetes.protobuf",
|
||||||
},
|
},
|
||||||
PercentageOfNodesToScore: defaultPercentageOfNodesToScore,
|
PercentageOfNodesToScore: defaultPercentageOfNodesToScore,
|
||||||
BindTimeoutSeconds: defaultBindTimeoutSeconds,
|
|
||||||
PodInitialBackoffSeconds: defaultPodInitialBackoffSeconds,
|
PodInitialBackoffSeconds: defaultPodInitialBackoffSeconds,
|
||||||
PodMaxBackoffSeconds: defaultPodMaxBackoffSeconds,
|
PodMaxBackoffSeconds: defaultPodMaxBackoffSeconds,
|
||||||
Profiles: []kubeschedulerconfig.KubeSchedulerProfile{
|
Profiles: []kubeschedulerconfig.KubeSchedulerProfile{
|
||||||
@ -659,7 +653,6 @@ profiles:
|
|||||||
ContentType: "application/vnd.kubernetes.protobuf",
|
ContentType: "application/vnd.kubernetes.protobuf",
|
||||||
},
|
},
|
||||||
PercentageOfNodesToScore: defaultPercentageOfNodesToScore,
|
PercentageOfNodesToScore: defaultPercentageOfNodesToScore,
|
||||||
BindTimeoutSeconds: defaultBindTimeoutSeconds,
|
|
||||||
PodInitialBackoffSeconds: defaultPodInitialBackoffSeconds,
|
PodInitialBackoffSeconds: defaultPodInitialBackoffSeconds,
|
||||||
PodMaxBackoffSeconds: defaultPodMaxBackoffSeconds,
|
PodMaxBackoffSeconds: defaultPodMaxBackoffSeconds,
|
||||||
Profiles: []kubeschedulerconfig.KubeSchedulerProfile{
|
Profiles: []kubeschedulerconfig.KubeSchedulerProfile{
|
||||||
@ -711,7 +704,6 @@ profiles:
|
|||||||
ContentType: "application/vnd.kubernetes.protobuf",
|
ContentType: "application/vnd.kubernetes.protobuf",
|
||||||
},
|
},
|
||||||
PercentageOfNodesToScore: defaultPercentageOfNodesToScore,
|
PercentageOfNodesToScore: defaultPercentageOfNodesToScore,
|
||||||
BindTimeoutSeconds: defaultBindTimeoutSeconds,
|
|
||||||
PodInitialBackoffSeconds: defaultPodInitialBackoffSeconds,
|
PodInitialBackoffSeconds: defaultPodInitialBackoffSeconds,
|
||||||
PodMaxBackoffSeconds: defaultPodMaxBackoffSeconds,
|
PodMaxBackoffSeconds: defaultPodMaxBackoffSeconds,
|
||||||
Profiles: []kubeschedulerconfig.KubeSchedulerProfile{
|
Profiles: []kubeschedulerconfig.KubeSchedulerProfile{
|
||||||
|
@ -337,7 +337,6 @@ func Setup(ctx context.Context, opts *options.Options, outOfTreeRegistryOptions
|
|||||||
scheduler.WithAlgorithmSource(cc.ComponentConfig.AlgorithmSource),
|
scheduler.WithAlgorithmSource(cc.ComponentConfig.AlgorithmSource),
|
||||||
scheduler.WithPreemptionDisabled(cc.ComponentConfig.DisablePreemption),
|
scheduler.WithPreemptionDisabled(cc.ComponentConfig.DisablePreemption),
|
||||||
scheduler.WithPercentageOfNodesToScore(cc.ComponentConfig.PercentageOfNodesToScore),
|
scheduler.WithPercentageOfNodesToScore(cc.ComponentConfig.PercentageOfNodesToScore),
|
||||||
scheduler.WithBindTimeoutSeconds(cc.ComponentConfig.BindTimeoutSeconds),
|
|
||||||
scheduler.WithFrameworkOutOfTreeRegistry(outOfTreeRegistry),
|
scheduler.WithFrameworkOutOfTreeRegistry(outOfTreeRegistry),
|
||||||
scheduler.WithPodMaxBackoffSeconds(cc.ComponentConfig.PodMaxBackoffSeconds),
|
scheduler.WithPodMaxBackoffSeconds(cc.ComponentConfig.PodMaxBackoffSeconds),
|
||||||
scheduler.WithPodInitialBackoffSeconds(cc.ComponentConfig.PodInitialBackoffSeconds),
|
scheduler.WithPodInitialBackoffSeconds(cc.ComponentConfig.PodInitialBackoffSeconds),
|
||||||
|
@ -478,7 +478,6 @@ profiles:
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
want: `apiVersion: kubescheduler.config.k8s.io/v1beta1
|
want: `apiVersion: kubescheduler.config.k8s.io/v1beta1
|
||||||
bindTimeoutSeconds: 0
|
|
||||||
clientConnection:
|
clientConnection:
|
||||||
acceptContentTypes: ""
|
acceptContentTypes: ""
|
||||||
burst: 0
|
burst: 0
|
||||||
|
@ -1617,15 +1617,6 @@ func TestPluginsConfigurationCompatibility(t *testing.T) {
|
|||||||
"PostBindPlugin": {{Name: "VolumeBinding"}},
|
"PostBindPlugin": {{Name: "VolumeBinding"}},
|
||||||
}
|
}
|
||||||
|
|
||||||
defaultPluginConfigs := []config.PluginConfig{
|
|
||||||
{
|
|
||||||
Name: "VolumeBinding",
|
|
||||||
Args: &config.VolumeBindingArgs{
|
|
||||||
BindTimeoutSeconds: 600,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
testcases := []struct {
|
testcases := []struct {
|
||||||
name string
|
name string
|
||||||
plugins config.Plugins
|
plugins config.Plugins
|
||||||
@ -1636,7 +1627,7 @@ func TestPluginsConfigurationCompatibility(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "default plugins",
|
name: "default plugins",
|
||||||
wantPlugins: defaultPlugins,
|
wantPlugins: defaultPlugins,
|
||||||
wantPluginConfig: defaultPluginConfigs,
|
wantPluginConfig: nil,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "default plugins with customized plugin config",
|
name: "default plugins with customized plugin config",
|
||||||
@ -1967,7 +1958,7 @@ func TestPluginsConfigurationCompatibility(t *testing.T) {
|
|||||||
"BindPlugin": {{Name: "DefaultBinder"}},
|
"BindPlugin": {{Name: "DefaultBinder"}},
|
||||||
"PostBindPlugin": {{Name: "VolumeBinding"}},
|
"PostBindPlugin": {{Name: "VolumeBinding"}},
|
||||||
},
|
},
|
||||||
wantPluginConfig: defaultPluginConfigs,
|
wantPluginConfig: nil,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, tc := range testcases {
|
for _, tc := range testcases {
|
||||||
|
@ -90,13 +90,6 @@ type KubeSchedulerConfiguration struct {
|
|||||||
// nodes will be scored.
|
// nodes will be scored.
|
||||||
PercentageOfNodesToScore int32
|
PercentageOfNodesToScore int32
|
||||||
|
|
||||||
// BindTimeoutSeconds is the timeout in seconds in volume binding operation.
|
|
||||||
// Value must be non-negative integer. The value zero indicates no waiting.
|
|
||||||
// If this value is nil, the default value will be used.
|
|
||||||
// DEPRECATED: BindTimeoutSeconds in deprecated.
|
|
||||||
// TODO(#90958) Remove this and the versioned counterparts in future API versions.
|
|
||||||
BindTimeoutSeconds int64
|
|
||||||
|
|
||||||
// PodInitialBackoffSeconds is the initial backoff for unschedulable pods.
|
// PodInitialBackoffSeconds is the initial backoff for unschedulable pods.
|
||||||
// If specified, it must be greater than 0. If this value is null, the default value (1s)
|
// If specified, it must be greater than 0. If this value is null, the default value (1s)
|
||||||
// will be used.
|
// will be used.
|
||||||
|
@ -135,11 +135,6 @@ func SetDefaults_KubeSchedulerConfiguration(obj *v1beta1.KubeSchedulerConfigurat
|
|||||||
// Use the default LeaderElectionConfiguration options
|
// Use the default LeaderElectionConfiguration options
|
||||||
componentbaseconfigv1alpha1.RecommendedDefaultLeaderElectionConfiguration(&obj.LeaderElection)
|
componentbaseconfigv1alpha1.RecommendedDefaultLeaderElectionConfiguration(&obj.LeaderElection)
|
||||||
|
|
||||||
if obj.BindTimeoutSeconds == nil {
|
|
||||||
val := int64(600)
|
|
||||||
obj.BindTimeoutSeconds = &val
|
|
||||||
}
|
|
||||||
|
|
||||||
if obj.PodInitialBackoffSeconds == nil {
|
if obj.PodInitialBackoffSeconds == nil {
|
||||||
val := int64(1)
|
val := int64(1)
|
||||||
obj.PodInitialBackoffSeconds = &val
|
obj.PodInitialBackoffSeconds = &val
|
||||||
|
@ -62,7 +62,6 @@ func TestSchedulerDefaults(t *testing.T) {
|
|||||||
},
|
},
|
||||||
DisablePreemption: pointer.BoolPtr(false),
|
DisablePreemption: pointer.BoolPtr(false),
|
||||||
PercentageOfNodesToScore: pointer.Int32Ptr(0),
|
PercentageOfNodesToScore: pointer.Int32Ptr(0),
|
||||||
BindTimeoutSeconds: pointer.Int64Ptr(600),
|
|
||||||
PodInitialBackoffSeconds: pointer.Int64Ptr(1),
|
PodInitialBackoffSeconds: pointer.Int64Ptr(1),
|
||||||
PodMaxBackoffSeconds: pointer.Int64Ptr(10),
|
PodMaxBackoffSeconds: pointer.Int64Ptr(10),
|
||||||
Profiles: []v1beta1.KubeSchedulerProfile{
|
Profiles: []v1beta1.KubeSchedulerProfile{
|
||||||
@ -104,7 +103,6 @@ func TestSchedulerDefaults(t *testing.T) {
|
|||||||
},
|
},
|
||||||
DisablePreemption: pointer.BoolPtr(false),
|
DisablePreemption: pointer.BoolPtr(false),
|
||||||
PercentageOfNodesToScore: pointer.Int32Ptr(0),
|
PercentageOfNodesToScore: pointer.Int32Ptr(0),
|
||||||
BindTimeoutSeconds: pointer.Int64Ptr(600),
|
|
||||||
PodInitialBackoffSeconds: pointer.Int64Ptr(1),
|
PodInitialBackoffSeconds: pointer.Int64Ptr(1),
|
||||||
PodMaxBackoffSeconds: pointer.Int64Ptr(10),
|
PodMaxBackoffSeconds: pointer.Int64Ptr(10),
|
||||||
Profiles: []v1beta1.KubeSchedulerProfile{
|
Profiles: []v1beta1.KubeSchedulerProfile{
|
||||||
@ -161,7 +159,6 @@ func TestSchedulerDefaults(t *testing.T) {
|
|||||||
},
|
},
|
||||||
DisablePreemption: pointer.BoolPtr(false),
|
DisablePreemption: pointer.BoolPtr(false),
|
||||||
PercentageOfNodesToScore: pointer.Int32Ptr(0),
|
PercentageOfNodesToScore: pointer.Int32Ptr(0),
|
||||||
BindTimeoutSeconds: pointer.Int64Ptr(600),
|
|
||||||
PodInitialBackoffSeconds: pointer.Int64Ptr(1),
|
PodInitialBackoffSeconds: pointer.Int64Ptr(1),
|
||||||
PodMaxBackoffSeconds: pointer.Int64Ptr(10),
|
PodMaxBackoffSeconds: pointer.Int64Ptr(10),
|
||||||
Profiles: []v1beta1.KubeSchedulerProfile{
|
Profiles: []v1beta1.KubeSchedulerProfile{
|
||||||
@ -212,7 +209,6 @@ func TestSchedulerDefaults(t *testing.T) {
|
|||||||
},
|
},
|
||||||
DisablePreemption: pointer.BoolPtr(false),
|
DisablePreemption: pointer.BoolPtr(false),
|
||||||
PercentageOfNodesToScore: pointer.Int32Ptr(0),
|
PercentageOfNodesToScore: pointer.Int32Ptr(0),
|
||||||
BindTimeoutSeconds: pointer.Int64Ptr(600),
|
|
||||||
PodInitialBackoffSeconds: pointer.Int64Ptr(1),
|
PodInitialBackoffSeconds: pointer.Int64Ptr(1),
|
||||||
PodMaxBackoffSeconds: pointer.Int64Ptr(10),
|
PodMaxBackoffSeconds: pointer.Int64Ptr(10),
|
||||||
Profiles: []v1beta1.KubeSchedulerProfile{
|
Profiles: []v1beta1.KubeSchedulerProfile{
|
||||||
@ -249,7 +245,6 @@ func TestSchedulerDefaults(t *testing.T) {
|
|||||||
},
|
},
|
||||||
DisablePreemption: pointer.BoolPtr(false),
|
DisablePreemption: pointer.BoolPtr(false),
|
||||||
PercentageOfNodesToScore: pointer.Int32Ptr(0),
|
PercentageOfNodesToScore: pointer.Int32Ptr(0),
|
||||||
BindTimeoutSeconds: pointer.Int64Ptr(600),
|
|
||||||
PodInitialBackoffSeconds: pointer.Int64Ptr(1),
|
PodInitialBackoffSeconds: pointer.Int64Ptr(1),
|
||||||
PodMaxBackoffSeconds: pointer.Int64Ptr(10),
|
PodMaxBackoffSeconds: pointer.Int64Ptr(10),
|
||||||
Profiles: []v1beta1.KubeSchedulerProfile{
|
Profiles: []v1beta1.KubeSchedulerProfile{
|
||||||
|
@ -28,7 +28,6 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestValidateKubeSchedulerConfiguration(t *testing.T) {
|
func TestValidateKubeSchedulerConfiguration(t *testing.T) {
|
||||||
testTimeout := int64(0)
|
|
||||||
podInitialBackoffSeconds := int64(1)
|
podInitialBackoffSeconds := int64(1)
|
||||||
podMaxBackoffSeconds := int64(1)
|
podMaxBackoffSeconds := int64(1)
|
||||||
validConfig := &config.KubeSchedulerConfiguration{
|
validConfig := &config.KubeSchedulerConfiguration{
|
||||||
@ -59,7 +58,6 @@ func TestValidateKubeSchedulerConfiguration(t *testing.T) {
|
|||||||
},
|
},
|
||||||
PodInitialBackoffSeconds: podInitialBackoffSeconds,
|
PodInitialBackoffSeconds: podInitialBackoffSeconds,
|
||||||
PodMaxBackoffSeconds: podMaxBackoffSeconds,
|
PodMaxBackoffSeconds: podMaxBackoffSeconds,
|
||||||
BindTimeoutSeconds: testTimeout,
|
|
||||||
PercentageOfNodesToScore: 35,
|
PercentageOfNodesToScore: 35,
|
||||||
Profiles: []config.KubeSchedulerProfile{
|
Profiles: []config.KubeSchedulerProfile{
|
||||||
{
|
{
|
||||||
|
@ -48,7 +48,6 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/defaultbinder"
|
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/defaultbinder"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/noderesources"
|
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/noderesources"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/queuesort"
|
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/queuesort"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding"
|
|
||||||
framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
|
framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
|
||||||
internalcache "k8s.io/kubernetes/pkg/scheduler/internal/cache"
|
internalcache "k8s.io/kubernetes/pkg/scheduler/internal/cache"
|
||||||
cachedebugger "k8s.io/kubernetes/pkg/scheduler/internal/cache/debugger"
|
cachedebugger "k8s.io/kubernetes/pkg/scheduler/internal/cache/debugger"
|
||||||
@ -86,8 +85,6 @@ type Configurator struct {
|
|||||||
// percentageOfNodesToScore specifies percentage of all nodes to score in each scheduling cycle.
|
// percentageOfNodesToScore specifies percentage of all nodes to score in each scheduling cycle.
|
||||||
percentageOfNodesToScore int32
|
percentageOfNodesToScore int32
|
||||||
|
|
||||||
bindTimeoutSeconds int64
|
|
||||||
|
|
||||||
podInitialBackoffSeconds int64
|
podInitialBackoffSeconds int64
|
||||||
|
|
||||||
podMaxBackoffSeconds int64
|
podMaxBackoffSeconds int64
|
||||||
@ -212,26 +209,6 @@ func (c *Configurator) create() (*Scheduler, error) {
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func maybeAppendVolumeBindingArgs(plugins *schedulerapi.Plugins, pcs []schedulerapi.PluginConfig, config schedulerapi.PluginConfig) []schedulerapi.PluginConfig {
|
|
||||||
enabled := false
|
|
||||||
for _, p := range plugins.PreBind.Enabled {
|
|
||||||
if p.Name == volumebinding.Name {
|
|
||||||
enabled = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if !enabled {
|
|
||||||
// skip if VolumeBinding is not enabled
|
|
||||||
return pcs
|
|
||||||
}
|
|
||||||
// append if not exist
|
|
||||||
for _, pc := range pcs {
|
|
||||||
if pc.Name == config.Name {
|
|
||||||
return pcs
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return append(pcs, config)
|
|
||||||
}
|
|
||||||
|
|
||||||
// createFromProvider creates a scheduler from the name of a registered algorithm provider.
|
// createFromProvider creates a scheduler from the name of a registered algorithm provider.
|
||||||
func (c *Configurator) createFromProvider(providerName string) (*Scheduler, error) {
|
func (c *Configurator) createFromProvider(providerName string) (*Scheduler, error) {
|
||||||
klog.V(2).Infof("Creating scheduler from algorithm provider '%v'", providerName)
|
klog.V(2).Infof("Creating scheduler from algorithm provider '%v'", providerName)
|
||||||
@ -247,12 +224,6 @@ func (c *Configurator) createFromProvider(providerName string) (*Scheduler, erro
|
|||||||
plugins.Append(defaultPlugins)
|
plugins.Append(defaultPlugins)
|
||||||
plugins.Apply(prof.Plugins)
|
plugins.Apply(prof.Plugins)
|
||||||
prof.Plugins = plugins
|
prof.Plugins = plugins
|
||||||
prof.PluginConfig = maybeAppendVolumeBindingArgs(prof.Plugins, prof.PluginConfig, schedulerapi.PluginConfig{
|
|
||||||
Name: volumebinding.Name,
|
|
||||||
Args: &schedulerapi.VolumeBindingArgs{
|
|
||||||
BindTimeoutSeconds: c.bindTimeoutSeconds,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
return c.create()
|
return c.create()
|
||||||
}
|
}
|
||||||
@ -348,12 +319,6 @@ func (c *Configurator) createFromConfig(policy schedulerapi.Policy) (*Scheduler,
|
|||||||
|
|
||||||
// PluginConfig is ignored when using Policy.
|
// PluginConfig is ignored when using Policy.
|
||||||
prof.PluginConfig = defPluginConfig
|
prof.PluginConfig = defPluginConfig
|
||||||
prof.PluginConfig = maybeAppendVolumeBindingArgs(prof.Plugins, prof.PluginConfig, schedulerapi.PluginConfig{
|
|
||||||
Name: volumebinding.Name,
|
|
||||||
Args: &schedulerapi.VolumeBindingArgs{
|
|
||||||
BindTimeoutSeconds: c.bindTimeoutSeconds,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return c.create()
|
return c.create()
|
||||||
|
@ -36,7 +36,6 @@ import (
|
|||||||
"k8s.io/client-go/tools/events"
|
"k8s.io/client-go/tools/events"
|
||||||
extenderv1 "k8s.io/kube-scheduler/extender/v1"
|
extenderv1 "k8s.io/kube-scheduler/extender/v1"
|
||||||
apicore "k8s.io/kubernetes/pkg/apis/core"
|
apicore "k8s.io/kubernetes/pkg/apis/core"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/apis/config"
|
|
||||||
schedulerapi "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
schedulerapi "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/apis/config/scheme"
|
"k8s.io/kubernetes/pkg/scheduler/apis/config/scheme"
|
||||||
frameworkplugins "k8s.io/kubernetes/pkg/scheduler/framework/plugins"
|
frameworkplugins "k8s.io/kubernetes/pkg/scheduler/framework/plugins"
|
||||||
@ -45,7 +44,6 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/nodelabel"
|
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/nodelabel"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/queuesort"
|
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/queuesort"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/serviceaffinity"
|
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/serviceaffinity"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding"
|
|
||||||
framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
|
framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
|
||||||
internalcache "k8s.io/kubernetes/pkg/scheduler/internal/cache"
|
internalcache "k8s.io/kubernetes/pkg/scheduler/internal/cache"
|
||||||
internalqueue "k8s.io/kubernetes/pkg/scheduler/internal/queue"
|
internalqueue "k8s.io/kubernetes/pkg/scheduler/internal/queue"
|
||||||
@ -54,7 +52,6 @@ import (
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
disablePodPreemption = false
|
disablePodPreemption = false
|
||||||
bindTimeoutSeconds = 600
|
|
||||||
podInitialBackoffDurationSeconds = 1
|
podInitialBackoffDurationSeconds = 1
|
||||||
podMaxBackoffDurationSeconds = 10
|
podMaxBackoffDurationSeconds = 10
|
||||||
testSchedulerName = "test-scheduler"
|
testSchedulerName = "test-scheduler"
|
||||||
@ -242,14 +239,7 @@ func TestCreateFromEmptyConfig(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
prof := factory.profiles[0]
|
prof := factory.profiles[0]
|
||||||
wantConfig := []schedulerapi.PluginConfig{
|
wantConfig := []schedulerapi.PluginConfig{}
|
||||||
{
|
|
||||||
Name: volumebinding.Name,
|
|
||||||
Args: &config.VolumeBindingArgs{
|
|
||||||
BindTimeoutSeconds: bindTimeoutSeconds,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
if diff := cmp.Diff(wantConfig, prof.PluginConfig); diff != "" {
|
if diff := cmp.Diff(wantConfig, prof.PluginConfig); diff != "" {
|
||||||
t.Errorf("wrong plugin config (-want, +got): %s", diff)
|
t.Errorf("wrong plugin config (-want, +got): %s", diff)
|
||||||
}
|
}
|
||||||
@ -465,7 +455,6 @@ func newConfigFactoryWithFrameworkRegistry(
|
|||||||
podInformer: informerFactory.Core().V1().Pods(),
|
podInformer: informerFactory.Core().V1().Pods(),
|
||||||
disablePreemption: disablePodPreemption,
|
disablePreemption: disablePodPreemption,
|
||||||
percentageOfNodesToScore: schedulerapi.DefaultPercentageOfNodesToScore,
|
percentageOfNodesToScore: schedulerapi.DefaultPercentageOfNodesToScore,
|
||||||
bindTimeoutSeconds: bindTimeoutSeconds,
|
|
||||||
podInitialBackoffSeconds: podInitialBackoffDurationSeconds,
|
podInitialBackoffSeconds: podInitialBackoffDurationSeconds,
|
||||||
podMaxBackoffSeconds: podMaxBackoffDurationSeconds,
|
podMaxBackoffSeconds: podMaxBackoffDurationSeconds,
|
||||||
StopEverything: stopCh,
|
StopEverything: stopCh,
|
||||||
|
@ -41,7 +41,6 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/scheduler/apis/config/scheme"
|
"k8s.io/kubernetes/pkg/scheduler/apis/config/scheme"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/core"
|
"k8s.io/kubernetes/pkg/scheduler/core"
|
||||||
frameworkplugins "k8s.io/kubernetes/pkg/scheduler/framework/plugins"
|
frameworkplugins "k8s.io/kubernetes/pkg/scheduler/framework/plugins"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding"
|
|
||||||
framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
|
framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
|
||||||
internalcache "k8s.io/kubernetes/pkg/scheduler/internal/cache"
|
internalcache "k8s.io/kubernetes/pkg/scheduler/internal/cache"
|
||||||
internalqueue "k8s.io/kubernetes/pkg/scheduler/internal/queue"
|
internalqueue "k8s.io/kubernetes/pkg/scheduler/internal/queue"
|
||||||
@ -113,7 +112,6 @@ type schedulerOptions struct {
|
|||||||
schedulerAlgorithmSource schedulerapi.SchedulerAlgorithmSource
|
schedulerAlgorithmSource schedulerapi.SchedulerAlgorithmSource
|
||||||
disablePreemption bool
|
disablePreemption bool
|
||||||
percentageOfNodesToScore int32
|
percentageOfNodesToScore int32
|
||||||
bindTimeoutSeconds int64
|
|
||||||
podInitialBackoffSeconds int64
|
podInitialBackoffSeconds int64
|
||||||
podMaxBackoffSeconds int64
|
podMaxBackoffSeconds int64
|
||||||
// Contains out-of-tree plugins to be merged with the in-tree registry.
|
// Contains out-of-tree plugins to be merged with the in-tree registry.
|
||||||
@ -155,13 +153,6 @@ func WithPercentageOfNodesToScore(percentageOfNodesToScore int32) Option {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithBindTimeoutSeconds sets bindTimeoutSeconds for Scheduler, the default value is 100
|
|
||||||
func WithBindTimeoutSeconds(bindTimeoutSeconds int64) Option {
|
|
||||||
return func(o *schedulerOptions) {
|
|
||||||
o.bindTimeoutSeconds = bindTimeoutSeconds
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// WithFrameworkOutOfTreeRegistry sets the registry for out-of-tree plugins. Those plugins
|
// WithFrameworkOutOfTreeRegistry sets the registry for out-of-tree plugins. Those plugins
|
||||||
// will be appended to the default registry.
|
// will be appended to the default registry.
|
||||||
func WithFrameworkOutOfTreeRegistry(registry framework.Registry) Option {
|
func WithFrameworkOutOfTreeRegistry(registry framework.Registry) Option {
|
||||||
@ -211,7 +202,6 @@ var defaultSchedulerOptions = schedulerOptions{
|
|||||||
},
|
},
|
||||||
disablePreemption: false,
|
disablePreemption: false,
|
||||||
percentageOfNodesToScore: schedulerapi.DefaultPercentageOfNodesToScore,
|
percentageOfNodesToScore: schedulerapi.DefaultPercentageOfNodesToScore,
|
||||||
bindTimeoutSeconds: volumebinding.DefaultBindTimeoutSeconds,
|
|
||||||
podInitialBackoffSeconds: int64(internalqueue.DefaultPodInitialBackoffDuration.Seconds()),
|
podInitialBackoffSeconds: int64(internalqueue.DefaultPodInitialBackoffDuration.Seconds()),
|
||||||
podMaxBackoffSeconds: int64(internalqueue.DefaultPodMaxBackoffDuration.Seconds()),
|
podMaxBackoffSeconds: int64(internalqueue.DefaultPodMaxBackoffDuration.Seconds()),
|
||||||
}
|
}
|
||||||
@ -252,7 +242,6 @@ func New(client clientset.Interface,
|
|||||||
StopEverything: stopEverything,
|
StopEverything: stopEverything,
|
||||||
disablePreemption: options.disablePreemption,
|
disablePreemption: options.disablePreemption,
|
||||||
percentageOfNodesToScore: options.percentageOfNodesToScore,
|
percentageOfNodesToScore: options.percentageOfNodesToScore,
|
||||||
bindTimeoutSeconds: options.bindTimeoutSeconds,
|
|
||||||
podInitialBackoffSeconds: options.podInitialBackoffSeconds,
|
podInitialBackoffSeconds: options.podInitialBackoffSeconds,
|
||||||
podMaxBackoffSeconds: options.podMaxBackoffSeconds,
|
podMaxBackoffSeconds: options.podMaxBackoffSeconds,
|
||||||
profiles: append([]schedulerapi.KubeSchedulerProfile(nil), options.profiles...),
|
profiles: append([]schedulerapi.KubeSchedulerProfile(nil), options.profiles...),
|
||||||
|
@ -42,14 +42,12 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
"k8s.io/client-go/informers"
|
"k8s.io/client-go/informers"
|
||||||
"k8s.io/client-go/kubernetes/fake"
|
|
||||||
clientsetfake "k8s.io/client-go/kubernetes/fake"
|
clientsetfake "k8s.io/client-go/kubernetes/fake"
|
||||||
"k8s.io/client-go/kubernetes/scheme"
|
"k8s.io/client-go/kubernetes/scheme"
|
||||||
clienttesting "k8s.io/client-go/testing"
|
clienttesting "k8s.io/client-go/testing"
|
||||||
clientcache "k8s.io/client-go/tools/cache"
|
clientcache "k8s.io/client-go/tools/cache"
|
||||||
"k8s.io/client-go/tools/events"
|
"k8s.io/client-go/tools/events"
|
||||||
"k8s.io/kubernetes/pkg/controller/volume/scheduling"
|
"k8s.io/kubernetes/pkg/controller/volume/scheduling"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/apis/config"
|
|
||||||
schedulerapi "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
schedulerapi "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/core"
|
"k8s.io/kubernetes/pkg/scheduler/core"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/defaultbinder"
|
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/defaultbinder"
|
||||||
@ -1187,125 +1185,6 @@ func TestSchedulerBinding(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TestInjectingPluginConfigForVolumeBinding tests injecting
|
|
||||||
// KubeSchedulerConfiguration.BindTimeoutSeconds as args for VolumeBinding if
|
|
||||||
// no plugin args is configured for it.
|
|
||||||
// TODO remove when KubeSchedulerConfiguration.BindTimeoutSeconds is eliminated
|
|
||||||
func TestInjectingPluginConfigForVolumeBinding(t *testing.T) {
|
|
||||||
defaultPluginConfigs := []config.PluginConfig{
|
|
||||||
{
|
|
||||||
Name: "VolumeBinding",
|
|
||||||
Args: &config.VolumeBindingArgs{
|
|
||||||
BindTimeoutSeconds: 600,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
tests := []struct {
|
|
||||||
name string
|
|
||||||
opts []Option
|
|
||||||
wantPluginConfig []config.PluginConfig
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
name: "default with provider",
|
|
||||||
wantPluginConfig: defaultPluginConfigs,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "default with policy",
|
|
||||||
opts: []Option{
|
|
||||||
WithAlgorithmSource(schedulerapi.SchedulerAlgorithmSource{
|
|
||||||
Policy: &config.SchedulerPolicySource{},
|
|
||||||
}),
|
|
||||||
},
|
|
||||||
wantPluginConfig: defaultPluginConfigs,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "customize BindTimeoutSeconds with provider",
|
|
||||||
opts: []Option{
|
|
||||||
WithBindTimeoutSeconds(100),
|
|
||||||
},
|
|
||||||
wantPluginConfig: []config.PluginConfig{
|
|
||||||
{
|
|
||||||
Name: "VolumeBinding",
|
|
||||||
Args: &config.VolumeBindingArgs{
|
|
||||||
BindTimeoutSeconds: 100,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "customize BindTimeoutSeconds with policy",
|
|
||||||
opts: []Option{
|
|
||||||
WithAlgorithmSource(schedulerapi.SchedulerAlgorithmSource{
|
|
||||||
Policy: &config.SchedulerPolicySource{},
|
|
||||||
}),
|
|
||||||
WithBindTimeoutSeconds(100),
|
|
||||||
},
|
|
||||||
wantPluginConfig: []config.PluginConfig{
|
|
||||||
{
|
|
||||||
Name: "VolumeBinding",
|
|
||||||
Args: &config.VolumeBindingArgs{
|
|
||||||
BindTimeoutSeconds: 100,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "PluginConfig is preferred",
|
|
||||||
opts: []Option{
|
|
||||||
WithBindTimeoutSeconds(100),
|
|
||||||
WithProfiles(config.KubeSchedulerProfile{
|
|
||||||
SchedulerName: v1.DefaultSchedulerName,
|
|
||||||
PluginConfig: []config.PluginConfig{
|
|
||||||
{
|
|
||||||
Name: "VolumeBinding",
|
|
||||||
Args: &config.VolumeBindingArgs{
|
|
||||||
BindTimeoutSeconds: 200,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
},
|
|
||||||
wantPluginConfig: []config.PluginConfig{
|
|
||||||
{
|
|
||||||
Name: "VolumeBinding",
|
|
||||||
Args: &config.VolumeBindingArgs{
|
|
||||||
BindTimeoutSeconds: 200,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, tt := range tests {
|
|
||||||
client := fake.NewSimpleClientset()
|
|
||||||
informerFactory := informers.NewSharedInformerFactory(client, 0)
|
|
||||||
recorderFactory := profile.NewRecorderFactory(events.NewBroadcaster(&events.EventSinkImpl{Interface: client.EventsV1beta1().Events("")}))
|
|
||||||
|
|
||||||
opts := append(tt.opts, WithBuildFrameworkCapturer(func(p config.KubeSchedulerProfile) {
|
|
||||||
if p.SchedulerName != v1.DefaultSchedulerName {
|
|
||||||
t.Errorf("unexpected scheduler name (want %q, got %q)", v1.DefaultSchedulerName, p.SchedulerName)
|
|
||||||
}
|
|
||||||
if diff := cmp.Diff(tt.wantPluginConfig, p.PluginConfig); diff != "" {
|
|
||||||
t.Errorf("unexpected plugins diff (-want, +got): %s", diff)
|
|
||||||
}
|
|
||||||
}))
|
|
||||||
|
|
||||||
_, err := New(
|
|
||||||
client,
|
|
||||||
informerFactory,
|
|
||||||
informerFactory.Core().V1().Pods(),
|
|
||||||
recorderFactory,
|
|
||||||
make(chan struct{}),
|
|
||||||
opts...,
|
|
||||||
)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("Error constructing: %v", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestRemoveNominatedNodeName(t *testing.T) {
|
func TestRemoveNominatedNodeName(t *testing.T) {
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
|
@ -74,13 +74,6 @@ type KubeSchedulerConfiguration struct {
|
|||||||
// nodes will be scored.
|
// nodes will be scored.
|
||||||
PercentageOfNodesToScore *int32 `json:"percentageOfNodesToScore,omitempty"`
|
PercentageOfNodesToScore *int32 `json:"percentageOfNodesToScore,omitempty"`
|
||||||
|
|
||||||
// Duration to wait for a binding operation to complete before timing out
|
|
||||||
// Value must be non-negative integer. The value zero indicates no waiting.
|
|
||||||
// If this value is nil, the default value will be used.
|
|
||||||
// DEPRECATED: BindTimeoutSeconds is deprecated. To change volume bind
|
|
||||||
// timeout, configure via plugin args for VolumeBinding.
|
|
||||||
BindTimeoutSeconds *int64 `json:"bindTimeoutSeconds,omitempty"`
|
|
||||||
|
|
||||||
// PodInitialBackoffSeconds is the initial backoff for unschedulable pods.
|
// PodInitialBackoffSeconds is the initial backoff for unschedulable pods.
|
||||||
// If specified, it must be greater than 0. If this value is null, the default value (1s)
|
// If specified, it must be greater than 0. If this value is null, the default value (1s)
|
||||||
// will be used.
|
// will be used.
|
||||||
|
@ -274,8 +274,6 @@ priorities: []
|
|||||||
stopCh := make(chan struct{})
|
stopCh := make(chan struct{})
|
||||||
eventBroadcaster.StartRecordingToSink(stopCh)
|
eventBroadcaster.StartRecordingToSink(stopCh)
|
||||||
|
|
||||||
defaultBindTimeout := int64(30)
|
|
||||||
|
|
||||||
sched, err := scheduler.New(clientSet,
|
sched, err := scheduler.New(clientSet,
|
||||||
informerFactory,
|
informerFactory,
|
||||||
scheduler.NewPodInformer(clientSet, 0),
|
scheduler.NewPodInformer(clientSet, 0),
|
||||||
@ -289,7 +287,17 @@ priorities: []
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
scheduler.WithBindTimeoutSeconds(defaultBindTimeout),
|
scheduler.WithProfiles(kubeschedulerconfig.KubeSchedulerProfile{
|
||||||
|
SchedulerName: v1.DefaultSchedulerName,
|
||||||
|
PluginConfig: []kubeschedulerconfig.PluginConfig{
|
||||||
|
{
|
||||||
|
Name: "VolumeBinding",
|
||||||
|
Args: &kubeschedulerconfig.VolumeBindingArgs{
|
||||||
|
BindTimeoutSeconds: 30,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("couldn't make scheduler config for test %d: %v", i, err)
|
t.Fatalf("couldn't make scheduler config for test %d: %v", i, err)
|
||||||
@ -320,8 +328,6 @@ func TestSchedulerCreationFromNonExistentConfigMap(t *testing.T) {
|
|||||||
stopCh := make(chan struct{})
|
stopCh := make(chan struct{})
|
||||||
eventBroadcaster.StartRecordingToSink(stopCh)
|
eventBroadcaster.StartRecordingToSink(stopCh)
|
||||||
|
|
||||||
defaultBindTimeout := int64(30)
|
|
||||||
|
|
||||||
_, err := scheduler.New(clientSet,
|
_, err := scheduler.New(clientSet,
|
||||||
informerFactory,
|
informerFactory,
|
||||||
scheduler.NewPodInformer(clientSet, 0),
|
scheduler.NewPodInformer(clientSet, 0),
|
||||||
@ -335,7 +341,18 @@ func TestSchedulerCreationFromNonExistentConfigMap(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
scheduler.WithBindTimeoutSeconds(defaultBindTimeout))
|
scheduler.WithProfiles(kubeschedulerconfig.KubeSchedulerProfile{
|
||||||
|
SchedulerName: v1.DefaultSchedulerName,
|
||||||
|
PluginConfig: []kubeschedulerconfig.PluginConfig{
|
||||||
|
{
|
||||||
|
Name: "VolumeBinding",
|
||||||
|
Args: &kubeschedulerconfig.VolumeBindingArgs{
|
||||||
|
BindTimeoutSeconds: 30,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatalf("Creation of scheduler didn't fail while the policy ConfigMap didn't exist.")
|
t.Fatalf("Creation of scheduler didn't fail while the policy ConfigMap didn't exist.")
|
||||||
|
@ -391,7 +391,6 @@ func InitTestSchedulerWithOptions(
|
|||||||
if policy != nil {
|
if policy != nil {
|
||||||
opts = append(opts, scheduler.WithAlgorithmSource(CreateAlgorithmSourceFromPolicy(policy, testCtx.ClientSet)))
|
opts = append(opts, scheduler.WithAlgorithmSource(CreateAlgorithmSourceFromPolicy(policy, testCtx.ClientSet)))
|
||||||
}
|
}
|
||||||
opts = append([]scheduler.Option{scheduler.WithBindTimeoutSeconds(600)}, opts...)
|
|
||||||
testCtx.Scheduler, err = scheduler.New(
|
testCtx.Scheduler, err = scheduler.New(
|
||||||
testCtx.ClientSet,
|
testCtx.ClientSet,
|
||||||
testCtx.InformerFactory,
|
testCtx.InformerFactory,
|
||||||
|
Loading…
Reference in New Issue
Block a user