mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-26 21:17:23 +00:00
move factory package to scheduler
This commit is contained in:
parent
aee99ce807
commit
4448a1cea9
@ -14,11 +14,11 @@ go_library(
|
|||||||
"//cmd/kube-scheduler/app/config:go_default_library",
|
"//cmd/kube-scheduler/app/config:go_default_library",
|
||||||
"//pkg/client/leaderelectionconfig:go_default_library",
|
"//pkg/client/leaderelectionconfig:go_default_library",
|
||||||
"//pkg/master/ports:go_default_library",
|
"//pkg/master/ports:go_default_library",
|
||||||
|
"//pkg/scheduler:go_default_library",
|
||||||
"//pkg/scheduler/apis/config:go_default_library",
|
"//pkg/scheduler/apis/config:go_default_library",
|
||||||
"//pkg/scheduler/apis/config/scheme:go_default_library",
|
"//pkg/scheduler/apis/config/scheme:go_default_library",
|
||||||
"//pkg/scheduler/apis/config/v1alpha1:go_default_library",
|
"//pkg/scheduler/apis/config/v1alpha1:go_default_library",
|
||||||
"//pkg/scheduler/apis/config/validation:go_default_library",
|
"//pkg/scheduler/apis/config/validation:go_default_library",
|
||||||
"//pkg/scheduler/factory:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
|
@ -22,8 +22,8 @@ import (
|
|||||||
"github.com/spf13/pflag"
|
"github.com/spf13/pflag"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/util/validation/field"
|
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||||
|
"k8s.io/kubernetes/pkg/scheduler"
|
||||||
kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/factory"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// DeprecatedOptions contains deprecated options and their flags.
|
// DeprecatedOptions contains deprecated options and their flags.
|
||||||
@ -44,7 +44,7 @@ func (o *DeprecatedOptions) AddFlags(fs *pflag.FlagSet, cfg *kubeschedulerconfig
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
fs.StringVar(&o.AlgorithmProvider, "algorithm-provider", o.AlgorithmProvider, "DEPRECATED: the scheduling algorithm provider to use, one of: "+factory.ListAlgorithmProviders())
|
fs.StringVar(&o.AlgorithmProvider, "algorithm-provider", o.AlgorithmProvider, "DEPRECATED: the scheduling algorithm provider to use, one of: "+scheduler.ListAlgorithmProviders())
|
||||||
fs.StringVar(&o.PolicyConfigFile, "policy-config-file", o.PolicyConfigFile, "DEPRECATED: file with scheduler policy configuration. This file is used if policy ConfigMap is not provided or --use-legacy-policy-config=true")
|
fs.StringVar(&o.PolicyConfigFile, "policy-config-file", o.PolicyConfigFile, "DEPRECATED: file with scheduler policy configuration. This file is used if policy ConfigMap is not provided or --use-legacy-policy-config=true")
|
||||||
usage := fmt.Sprintf("DEPRECATED: name of the ConfigMap object that contains scheduler's policy configuration. It must exist in the system namespace before scheduler initialization if --use-legacy-policy-config=false. The config must be provided as the value of an element in 'Data' map with the key='%v'", kubeschedulerconfig.SchedulerPolicyConfigMapKey)
|
usage := fmt.Sprintf("DEPRECATED: name of the ConfigMap object that contains scheduler's policy configuration. It must exist in the system namespace before scheduler initialization if --use-legacy-policy-config=false. The config must be provided as the value of an element in 'Data' map with the key='%v'", kubeschedulerconfig.SchedulerPolicyConfigMapKey)
|
||||||
fs.StringVar(&o.PolicyConfigMapName, "policy-configmap", o.PolicyConfigMapName, usage)
|
fs.StringVar(&o.PolicyConfigMapName, "policy-configmap", o.PolicyConfigMapName, usage)
|
||||||
|
@ -45,10 +45,10 @@ import (
|
|||||||
schedulerappconfig "k8s.io/kubernetes/cmd/kube-scheduler/app/config"
|
schedulerappconfig "k8s.io/kubernetes/cmd/kube-scheduler/app/config"
|
||||||
"k8s.io/kubernetes/pkg/client/leaderelectionconfig"
|
"k8s.io/kubernetes/pkg/client/leaderelectionconfig"
|
||||||
"k8s.io/kubernetes/pkg/master/ports"
|
"k8s.io/kubernetes/pkg/master/ports"
|
||||||
|
"k8s.io/kubernetes/pkg/scheduler"
|
||||||
kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||||
kubeschedulerscheme "k8s.io/kubernetes/pkg/scheduler/apis/config/scheme"
|
kubeschedulerscheme "k8s.io/kubernetes/pkg/scheduler/apis/config/scheme"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/apis/config/validation"
|
"k8s.io/kubernetes/pkg/scheduler/apis/config/validation"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/factory"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Options has all the params needed to run a Scheduler
|
// Options has all the params needed to run a Scheduler
|
||||||
@ -253,7 +253,7 @@ func (o *Options) Config() (*schedulerappconfig.Config, error) {
|
|||||||
|
|
||||||
c.Client = client
|
c.Client = client
|
||||||
c.InformerFactory = informers.NewSharedInformerFactory(client, 0)
|
c.InformerFactory = informers.NewSharedInformerFactory(client, 0)
|
||||||
c.PodInformer = factory.NewPodInformer(client, 0)
|
c.PodInformer = scheduler.NewPodInformer(client, 0)
|
||||||
c.EventClient = eventClient.EventsV1beta1()
|
c.EventClient = eventClient.EventsV1beta1()
|
||||||
c.CoreEventClient = eventClient.CoreV1()
|
c.CoreEventClient = eventClient.CoreV1()
|
||||||
c.Recorder = recorder
|
c.Recorder = recorder
|
||||||
|
@ -3,7 +3,9 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
|
|||||||
go_library(
|
go_library(
|
||||||
name = "go_default_library",
|
name = "go_default_library",
|
||||||
srcs = [
|
srcs = [
|
||||||
|
"algorithm_factory.go",
|
||||||
"eventhandlers.go",
|
"eventhandlers.go",
|
||||||
|
"factory.go",
|
||||||
"scheduler.go",
|
"scheduler.go",
|
||||||
],
|
],
|
||||||
importpath = "k8s.io/kubernetes/pkg/scheduler",
|
importpath = "k8s.io/kubernetes/pkg/scheduler",
|
||||||
@ -11,28 +13,45 @@ go_library(
|
|||||||
deps = [
|
deps = [
|
||||||
"//pkg/api/v1/pod:go_default_library",
|
"//pkg/api/v1/pod:go_default_library",
|
||||||
"//pkg/features:go_default_library",
|
"//pkg/features:go_default_library",
|
||||||
|
"//pkg/scheduler/algorithm:go_default_library",
|
||||||
|
"//pkg/scheduler/algorithm/predicates:go_default_library",
|
||||||
|
"//pkg/scheduler/algorithm/priorities:go_default_library",
|
||||||
"//pkg/scheduler/api:go_default_library",
|
"//pkg/scheduler/api:go_default_library",
|
||||||
"//pkg/scheduler/api/latest:go_default_library",
|
"//pkg/scheduler/api/latest:go_default_library",
|
||||||
|
"//pkg/scheduler/api/validation:go_default_library",
|
||||||
"//pkg/scheduler/apis/config:go_default_library",
|
"//pkg/scheduler/apis/config:go_default_library",
|
||||||
"//pkg/scheduler/core:go_default_library",
|
"//pkg/scheduler/core:go_default_library",
|
||||||
"//pkg/scheduler/factory:go_default_library",
|
|
||||||
"//pkg/scheduler/framework/plugins:go_default_library",
|
"//pkg/scheduler/framework/plugins:go_default_library",
|
||||||
"//pkg/scheduler/framework/v1alpha1:go_default_library",
|
"//pkg/scheduler/framework/v1alpha1:go_default_library",
|
||||||
"//pkg/scheduler/internal/cache:go_default_library",
|
"//pkg/scheduler/internal/cache:go_default_library",
|
||||||
|
"//pkg/scheduler/internal/cache/debugger:go_default_library",
|
||||||
"//pkg/scheduler/internal/queue:go_default_library",
|
"//pkg/scheduler/internal/queue:go_default_library",
|
||||||
"//pkg/scheduler/metrics:go_default_library",
|
"//pkg/scheduler/metrics:go_default_library",
|
||||||
"//pkg/scheduler/volumebinder:go_default_library",
|
"//pkg/scheduler/volumebinder:go_default_library",
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/storage/v1:go_default_library",
|
"//staging/src/k8s.io/api/storage/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/storage/v1beta1:go_default_library",
|
"//staging/src/k8s.io/api/storage/v1beta1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
||||||
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/informers:go_default_library",
|
"//staging/src/k8s.io/client-go/informers:go_default_library",
|
||||||
|
"//staging/src/k8s.io/client-go/informers/apps/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/informers/core/v1:go_default_library",
|
"//staging/src/k8s.io/client-go/informers/core/v1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/client-go/informers/policy/v1beta1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/client-go/informers/storage/v1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/client-go/informers/storage/v1beta1:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
||||||
|
"//staging/src/k8s.io/client-go/listers/apps/v1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/client-go/listers/core/v1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/client-go/listers/policy/v1beta1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/client-go/listers/storage/v1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/client-go/listers/storage/v1beta1:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/tools/cache:go_default_library",
|
"//staging/src/k8s.io/client-go/tools/cache:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/tools/events:go_default_library",
|
"//staging/src/k8s.io/client-go/tools/events:go_default_library",
|
||||||
"//vendor/k8s.io/klog:go_default_library",
|
"//vendor/k8s.io/klog:go_default_library",
|
||||||
@ -42,19 +61,24 @@ go_library(
|
|||||||
go_test(
|
go_test(
|
||||||
name = "go_default_test",
|
name = "go_default_test",
|
||||||
srcs = [
|
srcs = [
|
||||||
|
"algorithm_factory_test.go",
|
||||||
"eventhandlers_test.go",
|
"eventhandlers_test.go",
|
||||||
|
"factory_test.go",
|
||||||
"scheduler_test.go",
|
"scheduler_test.go",
|
||||||
],
|
],
|
||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
deps = [
|
deps = [
|
||||||
|
"//pkg/api/testing:go_default_library",
|
||||||
"//pkg/controller/volume/scheduling:go_default_library",
|
"//pkg/controller/volume/scheduling:go_default_library",
|
||||||
"//pkg/scheduler/algorithm:go_default_library",
|
"//pkg/scheduler/algorithm:go_default_library",
|
||||||
"//pkg/scheduler/algorithm/predicates:go_default_library",
|
"//pkg/scheduler/algorithm/predicates:go_default_library",
|
||||||
"//pkg/scheduler/algorithm/priorities:go_default_library",
|
"//pkg/scheduler/algorithm/priorities:go_default_library",
|
||||||
"//pkg/scheduler/api:go_default_library",
|
"//pkg/scheduler/api:go_default_library",
|
||||||
|
"//pkg/scheduler/api/latest:go_default_library",
|
||||||
"//pkg/scheduler/apis/config:go_default_library",
|
"//pkg/scheduler/apis/config:go_default_library",
|
||||||
|
"//pkg/scheduler/apis/extender/v1:go_default_library",
|
||||||
"//pkg/scheduler/core:go_default_library",
|
"//pkg/scheduler/core:go_default_library",
|
||||||
"//pkg/scheduler/factory:go_default_library",
|
"//pkg/scheduler/framework/plugins:go_default_library",
|
||||||
"//pkg/scheduler/framework/v1alpha1:go_default_library",
|
"//pkg/scheduler/framework/v1alpha1:go_default_library",
|
||||||
"//pkg/scheduler/internal/cache:go_default_library",
|
"//pkg/scheduler/internal/cache:go_default_library",
|
||||||
"//pkg/scheduler/internal/cache/fake:go_default_library",
|
"//pkg/scheduler/internal/cache/fake:go_default_library",
|
||||||
@ -68,14 +92,20 @@ go_test(
|
|||||||
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/informers:go_default_library",
|
"//staging/src/k8s.io/client-go/informers:go_default_library",
|
||||||
|
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library",
|
"//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library",
|
"//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library",
|
||||||
|
"//staging/src/k8s.io/client-go/kubernetes/typed/core/v1/fake:go_default_library",
|
||||||
|
"//staging/src/k8s.io/client-go/testing:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/tools/cache:go_default_library",
|
"//staging/src/k8s.io/client-go/tools/cache:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/tools/events:go_default_library",
|
"//staging/src/k8s.io/client-go/tools/events:go_default_library",
|
||||||
|
"//vendor/github.com/google/go-cmp/cmp:go_default_library",
|
||||||
|
"//vendor/github.com/stretchr/testify/assert:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -96,7 +126,6 @@ filegroup(
|
|||||||
"//pkg/scheduler/apis/config:all-srcs",
|
"//pkg/scheduler/apis/config:all-srcs",
|
||||||
"//pkg/scheduler/apis/extender/v1:all-srcs",
|
"//pkg/scheduler/apis/extender/v1:all-srcs",
|
||||||
"//pkg/scheduler/core:all-srcs",
|
"//pkg/scheduler/core:all-srcs",
|
||||||
"//pkg/scheduler/factory:all-srcs",
|
|
||||||
"//pkg/scheduler/framework:all-srcs",
|
"//pkg/scheduler/framework:all-srcs",
|
||||||
"//pkg/scheduler/internal/cache:all-srcs",
|
"//pkg/scheduler/internal/cache:all-srcs",
|
||||||
"//pkg/scheduler/internal/heap:all-srcs",
|
"//pkg/scheduler/internal/heap:all-srcs",
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package factory
|
package scheduler
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@ -111,8 +111,8 @@ type Snapshot struct {
|
|||||||
algorithmProviderMap map[string]AlgorithmProviderConfig
|
algorithmProviderMap map[string]AlgorithmProviderConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy returns a snapshot of current registered predicates and priorities.
|
// RegisteredPredicatesAndPrioritiesSnapshot returns a snapshot of current registered predicates and priorities.
|
||||||
func Copy() *Snapshot {
|
func RegisteredPredicatesAndPrioritiesSnapshot() *Snapshot {
|
||||||
schedulerFactoryMutex.RLock()
|
schedulerFactoryMutex.RLock()
|
||||||
defer schedulerFactoryMutex.RUnlock()
|
defer schedulerFactoryMutex.RUnlock()
|
||||||
|
|
||||||
@ -147,8 +147,8 @@ func Copy() *Snapshot {
|
|||||||
return ©
|
return ©
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply sets state of predicates and priorities to `s`.
|
// ApplyPredicatesAndPriorities sets state of predicates and priorities to `s`.
|
||||||
func Apply(s *Snapshot) {
|
func ApplyPredicatesAndPriorities(s *Snapshot) {
|
||||||
schedulerFactoryMutex.Lock()
|
schedulerFactoryMutex.Lock()
|
||||||
fitPredicateMap = s.fitPredicateMap
|
fitPredicateMap = s.fitPredicateMap
|
||||||
mandatoryFitPredicates = s.mandatoryFitPredicates
|
mandatoryFitPredicates = s.mandatoryFitPredicates
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package factory
|
package scheduler
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
@ -19,7 +19,7 @@ go_test(
|
|||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/features:go_default_library",
|
"//pkg/features:go_default_library",
|
||||||
"//pkg/scheduler/factory:go_default_library",
|
"//pkg/scheduler:go_default_library",
|
||||||
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
||||||
"//staging/src/k8s.io/component-base/featuregate/testing:go_default_library",
|
"//staging/src/k8s.io/component-base/featuregate/testing:go_default_library",
|
||||||
],
|
],
|
||||||
|
@ -16,11 +16,11 @@ go_library(
|
|||||||
importpath = "k8s.io/kubernetes/pkg/scheduler/algorithmprovider/defaults",
|
importpath = "k8s.io/kubernetes/pkg/scheduler/algorithmprovider/defaults",
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/features:go_default_library",
|
"//pkg/features:go_default_library",
|
||||||
|
"//pkg/scheduler:go_default_library",
|
||||||
"//pkg/scheduler/algorithm:go_default_library",
|
"//pkg/scheduler/algorithm:go_default_library",
|
||||||
"//pkg/scheduler/algorithm/predicates:go_default_library",
|
"//pkg/scheduler/algorithm/predicates:go_default_library",
|
||||||
"//pkg/scheduler/algorithm/priorities:go_default_library",
|
"//pkg/scheduler/algorithm/priorities:go_default_library",
|
||||||
"//pkg/scheduler/core:go_default_library",
|
"//pkg/scheduler/core:go_default_library",
|
||||||
"//pkg/scheduler/factory:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
||||||
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
||||||
"//vendor/k8s.io/klog:go_default_library",
|
"//vendor/k8s.io/klog:go_default_library",
|
||||||
|
@ -23,9 +23,9 @@ import (
|
|||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/features"
|
"k8s.io/kubernetes/pkg/features"
|
||||||
|
"k8s.io/kubernetes/pkg/scheduler"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/algorithm/predicates"
|
"k8s.io/kubernetes/pkg/scheduler/algorithm/predicates"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/algorithm/priorities"
|
"k8s.io/kubernetes/pkg/scheduler/algorithm/priorities"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/factory"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -61,32 +61,32 @@ func defaultPredicates() sets.String {
|
|||||||
// when this function is called, and should be called in tests which may modify the value
|
// when this function is called, and should be called in tests which may modify the value
|
||||||
// of a feature gate temporarily.
|
// of a feature gate temporarily.
|
||||||
func ApplyFeatureGates() (restore func()) {
|
func ApplyFeatureGates() (restore func()) {
|
||||||
snapshot := factory.Copy()
|
snapshot := scheduler.RegisteredPredicatesAndPrioritiesSnapshot()
|
||||||
if utilfeature.DefaultFeatureGate.Enabled(features.TaintNodesByCondition) {
|
if utilfeature.DefaultFeatureGate.Enabled(features.TaintNodesByCondition) {
|
||||||
// Remove "CheckNodeCondition", "CheckNodeMemoryPressure", "CheckNodePIDPressure"
|
// Remove "CheckNodeCondition", "CheckNodeMemoryPressure", "CheckNodePIDPressure"
|
||||||
// and "CheckNodeDiskPressure" predicates
|
// and "CheckNodeDiskPressure" predicates
|
||||||
factory.RemoveFitPredicate(predicates.CheckNodeConditionPred)
|
scheduler.RemoveFitPredicate(predicates.CheckNodeConditionPred)
|
||||||
factory.RemoveFitPredicate(predicates.CheckNodeMemoryPressurePred)
|
scheduler.RemoveFitPredicate(predicates.CheckNodeMemoryPressurePred)
|
||||||
factory.RemoveFitPredicate(predicates.CheckNodeDiskPressurePred)
|
scheduler.RemoveFitPredicate(predicates.CheckNodeDiskPressurePred)
|
||||||
factory.RemoveFitPredicate(predicates.CheckNodePIDPressurePred)
|
scheduler.RemoveFitPredicate(predicates.CheckNodePIDPressurePred)
|
||||||
// Remove key "CheckNodeCondition", "CheckNodeMemoryPressure", "CheckNodePIDPressure" and "CheckNodeDiskPressure"
|
// Remove key "CheckNodeCondition", "CheckNodeMemoryPressure", "CheckNodePIDPressure" and "CheckNodeDiskPressure"
|
||||||
// from ALL algorithm provider
|
// from ALL algorithm provider
|
||||||
// The key will be removed from all providers which in algorithmProviderMap[]
|
// The key will be removed from all providers which in algorithmProviderMap[]
|
||||||
// if you just want remove specific provider, call func RemovePredicateKeyFromAlgoProvider()
|
// if you just want remove specific provider, call func RemovePredicateKeyFromAlgoProvider()
|
||||||
factory.RemovePredicateKeyFromAlgorithmProviderMap(predicates.CheckNodeConditionPred)
|
scheduler.RemovePredicateKeyFromAlgorithmProviderMap(predicates.CheckNodeConditionPred)
|
||||||
factory.RemovePredicateKeyFromAlgorithmProviderMap(predicates.CheckNodeMemoryPressurePred)
|
scheduler.RemovePredicateKeyFromAlgorithmProviderMap(predicates.CheckNodeMemoryPressurePred)
|
||||||
factory.RemovePredicateKeyFromAlgorithmProviderMap(predicates.CheckNodeDiskPressurePred)
|
scheduler.RemovePredicateKeyFromAlgorithmProviderMap(predicates.CheckNodeDiskPressurePred)
|
||||||
factory.RemovePredicateKeyFromAlgorithmProviderMap(predicates.CheckNodePIDPressurePred)
|
scheduler.RemovePredicateKeyFromAlgorithmProviderMap(predicates.CheckNodePIDPressurePred)
|
||||||
|
|
||||||
// Fit is determined based on whether a pod can tolerate all of the node's taints
|
// Fit is determined based on whether a pod can tolerate all of the node's taints
|
||||||
factory.RegisterMandatoryFitPredicate(predicates.PodToleratesNodeTaintsPred, predicates.PodToleratesNodeTaints)
|
scheduler.RegisterMandatoryFitPredicate(predicates.PodToleratesNodeTaintsPred, predicates.PodToleratesNodeTaints)
|
||||||
// Fit is determined based on whether a pod can tolerate unschedulable of node
|
// Fit is determined based on whether a pod can tolerate unschedulable of node
|
||||||
factory.RegisterMandatoryFitPredicate(predicates.CheckNodeUnschedulablePred, predicates.CheckNodeUnschedulablePredicate)
|
scheduler.RegisterMandatoryFitPredicate(predicates.CheckNodeUnschedulablePred, predicates.CheckNodeUnschedulablePredicate)
|
||||||
// Insert Key "PodToleratesNodeTaints" and "CheckNodeUnschedulable" To All Algorithm Provider
|
// Insert Key "PodToleratesNodeTaints" and "CheckNodeUnschedulable" To All Algorithm Provider
|
||||||
// The key will insert to all providers which in algorithmProviderMap[]
|
// The key will insert to all providers which in algorithmProviderMap[]
|
||||||
// if you just want insert to specific provider, call func InsertPredicateKeyToAlgoProvider()
|
// if you just want insert to specific provider, call func InsertPredicateKeyToAlgoProvider()
|
||||||
factory.InsertPredicateKeyToAlgorithmProviderMap(predicates.PodToleratesNodeTaintsPred)
|
scheduler.InsertPredicateKeyToAlgorithmProviderMap(predicates.PodToleratesNodeTaintsPred)
|
||||||
factory.InsertPredicateKeyToAlgorithmProviderMap(predicates.CheckNodeUnschedulablePred)
|
scheduler.InsertPredicateKeyToAlgorithmProviderMap(predicates.CheckNodeUnschedulablePred)
|
||||||
|
|
||||||
klog.Infof("TaintNodesByCondition is enabled, PodToleratesNodeTaints predicate is mandatory")
|
klog.Infof("TaintNodesByCondition is enabled, PodToleratesNodeTaints predicate is mandatory")
|
||||||
}
|
}
|
||||||
@ -95,23 +95,23 @@ func ApplyFeatureGates() (restore func()) {
|
|||||||
if utilfeature.DefaultFeatureGate.Enabled(features.EvenPodsSpread) {
|
if utilfeature.DefaultFeatureGate.Enabled(features.EvenPodsSpread) {
|
||||||
klog.Infof("Registering EvenPodsSpread predicate and priority function")
|
klog.Infof("Registering EvenPodsSpread predicate and priority function")
|
||||||
// register predicate
|
// register predicate
|
||||||
factory.InsertPredicateKeyToAlgorithmProviderMap(predicates.EvenPodsSpreadPred)
|
scheduler.InsertPredicateKeyToAlgorithmProviderMap(predicates.EvenPodsSpreadPred)
|
||||||
factory.RegisterFitPredicate(predicates.EvenPodsSpreadPred, predicates.EvenPodsSpreadPredicate)
|
scheduler.RegisterFitPredicate(predicates.EvenPodsSpreadPred, predicates.EvenPodsSpreadPredicate)
|
||||||
// register priority
|
// register priority
|
||||||
factory.InsertPriorityKeyToAlgorithmProviderMap(priorities.EvenPodsSpreadPriority)
|
scheduler.InsertPriorityKeyToAlgorithmProviderMap(priorities.EvenPodsSpreadPriority)
|
||||||
factory.RegisterPriorityFunction(priorities.EvenPodsSpreadPriority, priorities.CalculateEvenPodsSpreadPriority, 1)
|
scheduler.RegisterPriorityFunction(priorities.EvenPodsSpreadPriority, priorities.CalculateEvenPodsSpreadPriority, 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prioritizes nodes that satisfy pod's resource limits
|
// Prioritizes nodes that satisfy pod's resource limits
|
||||||
if utilfeature.DefaultFeatureGate.Enabled(features.ResourceLimitsPriorityFunction) {
|
if utilfeature.DefaultFeatureGate.Enabled(features.ResourceLimitsPriorityFunction) {
|
||||||
klog.Infof("Registering resourcelimits priority function")
|
klog.Infof("Registering resourcelimits priority function")
|
||||||
factory.RegisterPriorityMapReduceFunction(priorities.ResourceLimitsPriority, priorities.ResourceLimitsPriorityMap, nil, 1)
|
scheduler.RegisterPriorityMapReduceFunction(priorities.ResourceLimitsPriority, priorities.ResourceLimitsPriorityMap, nil, 1)
|
||||||
// Register the priority function to specific provider too.
|
// Register the priority function to specific provider too.
|
||||||
factory.InsertPriorityKeyToAlgorithmProviderMap(factory.RegisterPriorityMapReduceFunction(priorities.ResourceLimitsPriority, priorities.ResourceLimitsPriorityMap, nil, 1))
|
scheduler.InsertPriorityKeyToAlgorithmProviderMap(scheduler.RegisterPriorityMapReduceFunction(priorities.ResourceLimitsPriority, priorities.ResourceLimitsPriorityMap, nil, 1))
|
||||||
}
|
}
|
||||||
|
|
||||||
restore = func() {
|
restore = func() {
|
||||||
factory.Apply(snapshot)
|
scheduler.ApplyPredicatesAndPriorities(snapshot)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -119,9 +119,9 @@ func ApplyFeatureGates() (restore func()) {
|
|||||||
func registerAlgorithmProvider(predSet, priSet sets.String) {
|
func registerAlgorithmProvider(predSet, priSet sets.String) {
|
||||||
// Registers algorithm providers. By default we use 'DefaultProvider', but user can specify one to be used
|
// Registers algorithm providers. By default we use 'DefaultProvider', but user can specify one to be used
|
||||||
// by specifying flag.
|
// by specifying flag.
|
||||||
factory.RegisterAlgorithmProvider(factory.DefaultProvider, predSet, priSet)
|
scheduler.RegisterAlgorithmProvider(scheduler.DefaultProvider, predSet, priSet)
|
||||||
// Cluster autoscaler friendly scheduling algorithm.
|
// Cluster autoscaler friendly scheduling algorithm.
|
||||||
factory.RegisterAlgorithmProvider(ClusterAutoscalerProvider, predSet,
|
scheduler.RegisterAlgorithmProvider(ClusterAutoscalerProvider, predSet,
|
||||||
copyAndReplace(priSet, priorities.LeastRequestedPriority, priorities.MostRequestedPriority))
|
copyAndReplace(priSet, priorities.LeastRequestedPriority, priorities.MostRequestedPriority))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,13 +17,13 @@ limitations under the License.
|
|||||||
package defaults
|
package defaults
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"k8s.io/kubernetes/pkg/scheduler"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/algorithm/predicates"
|
"k8s.io/kubernetes/pkg/scheduler/algorithm/predicates"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/factory"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
// Register functions that extract metadata used by predicates computations.
|
// Register functions that extract metadata used by predicates computations.
|
||||||
factory.RegisterPredicateMetadataProducer(predicates.GetPredicateMetadata)
|
scheduler.RegisterPredicateMetadataProducer(predicates.GetPredicateMetadata)
|
||||||
|
|
||||||
// IMPORTANT NOTES for predicate developers:
|
// IMPORTANT NOTES for predicate developers:
|
||||||
// Registers predicates and priorities that are not enabled by default, but user can pick when creating their
|
// Registers predicates and priorities that are not enabled by default, but user can pick when creating their
|
||||||
@ -31,97 +31,97 @@ func init() {
|
|||||||
|
|
||||||
// PodFitsPorts has been replaced by PodFitsHostPorts for better user understanding.
|
// PodFitsPorts has been replaced by PodFitsHostPorts for better user understanding.
|
||||||
// For backwards compatibility with 1.0, PodFitsPorts is registered as well.
|
// For backwards compatibility with 1.0, PodFitsPorts is registered as well.
|
||||||
factory.RegisterFitPredicate("PodFitsPorts", predicates.PodFitsHostPorts)
|
scheduler.RegisterFitPredicate("PodFitsPorts", predicates.PodFitsHostPorts)
|
||||||
// Fit is defined based on the absence of port conflicts.
|
// Fit is defined based on the absence of port conflicts.
|
||||||
// This predicate is actually a default predicate, because it is invoked from
|
// This predicate is actually a default predicate, because it is invoked from
|
||||||
// predicates.GeneralPredicates()
|
// predicates.GeneralPredicates()
|
||||||
factory.RegisterFitPredicate(predicates.PodFitsHostPortsPred, predicates.PodFitsHostPorts)
|
scheduler.RegisterFitPredicate(predicates.PodFitsHostPortsPred, predicates.PodFitsHostPorts)
|
||||||
// Fit is determined by resource availability.
|
// Fit is determined by resource availability.
|
||||||
// This predicate is actually a default predicate, because it is invoked from
|
// This predicate is actually a default predicate, because it is invoked from
|
||||||
// predicates.GeneralPredicates()
|
// predicates.GeneralPredicates()
|
||||||
factory.RegisterFitPredicate(predicates.PodFitsResourcesPred, predicates.PodFitsResources)
|
scheduler.RegisterFitPredicate(predicates.PodFitsResourcesPred, predicates.PodFitsResources)
|
||||||
// Fit is determined by the presence of the Host parameter and a string match
|
// Fit is determined by the presence of the Host parameter and a string match
|
||||||
// This predicate is actually a default predicate, because it is invoked from
|
// This predicate is actually a default predicate, because it is invoked from
|
||||||
// predicates.GeneralPredicates()
|
// predicates.GeneralPredicates()
|
||||||
factory.RegisterFitPredicate(predicates.HostNamePred, predicates.PodFitsHost)
|
scheduler.RegisterFitPredicate(predicates.HostNamePred, predicates.PodFitsHost)
|
||||||
// Fit is determined by node selector query.
|
// Fit is determined by node selector query.
|
||||||
factory.RegisterFitPredicate(predicates.MatchNodeSelectorPred, predicates.PodMatchNodeSelector)
|
scheduler.RegisterFitPredicate(predicates.MatchNodeSelectorPred, predicates.PodMatchNodeSelector)
|
||||||
|
|
||||||
// Fit is determined by volume zone requirements.
|
// Fit is determined by volume zone requirements.
|
||||||
factory.RegisterFitPredicateFactory(
|
scheduler.RegisterFitPredicateFactory(
|
||||||
predicates.NoVolumeZoneConflictPred,
|
predicates.NoVolumeZoneConflictPred,
|
||||||
func(args factory.PluginFactoryArgs) predicates.FitPredicate {
|
func(args scheduler.PluginFactoryArgs) predicates.FitPredicate {
|
||||||
return predicates.NewVolumeZonePredicate(args.PVInfo, args.PVCInfo, args.StorageClassInfo)
|
return predicates.NewVolumeZonePredicate(args.PVInfo, args.PVCInfo, args.StorageClassInfo)
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
// Fit is determined by whether or not there would be too many AWS EBS volumes attached to the node
|
// Fit is determined by whether or not there would be too many AWS EBS volumes attached to the node
|
||||||
factory.RegisterFitPredicateFactory(
|
scheduler.RegisterFitPredicateFactory(
|
||||||
predicates.MaxEBSVolumeCountPred,
|
predicates.MaxEBSVolumeCountPred,
|
||||||
func(args factory.PluginFactoryArgs) predicates.FitPredicate {
|
func(args scheduler.PluginFactoryArgs) predicates.FitPredicate {
|
||||||
return predicates.NewMaxPDVolumeCountPredicate(predicates.EBSVolumeFilterType, args.CSINodeInfo, args.StorageClassInfo, args.PVInfo, args.PVCInfo)
|
return predicates.NewMaxPDVolumeCountPredicate(predicates.EBSVolumeFilterType, args.CSINodeInfo, args.StorageClassInfo, args.PVInfo, args.PVCInfo)
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
// Fit is determined by whether or not there would be too many GCE PD volumes attached to the node
|
// Fit is determined by whether or not there would be too many GCE PD volumes attached to the node
|
||||||
factory.RegisterFitPredicateFactory(
|
scheduler.RegisterFitPredicateFactory(
|
||||||
predicates.MaxGCEPDVolumeCountPred,
|
predicates.MaxGCEPDVolumeCountPred,
|
||||||
func(args factory.PluginFactoryArgs) predicates.FitPredicate {
|
func(args scheduler.PluginFactoryArgs) predicates.FitPredicate {
|
||||||
return predicates.NewMaxPDVolumeCountPredicate(predicates.GCEPDVolumeFilterType, args.CSINodeInfo, args.StorageClassInfo, args.PVInfo, args.PVCInfo)
|
return predicates.NewMaxPDVolumeCountPredicate(predicates.GCEPDVolumeFilterType, args.CSINodeInfo, args.StorageClassInfo, args.PVInfo, args.PVCInfo)
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
// Fit is determined by whether or not there would be too many Azure Disk volumes attached to the node
|
// Fit is determined by whether or not there would be too many Azure Disk volumes attached to the node
|
||||||
factory.RegisterFitPredicateFactory(
|
scheduler.RegisterFitPredicateFactory(
|
||||||
predicates.MaxAzureDiskVolumeCountPred,
|
predicates.MaxAzureDiskVolumeCountPred,
|
||||||
func(args factory.PluginFactoryArgs) predicates.FitPredicate {
|
func(args scheduler.PluginFactoryArgs) predicates.FitPredicate {
|
||||||
return predicates.NewMaxPDVolumeCountPredicate(predicates.AzureDiskVolumeFilterType, args.CSINodeInfo, args.StorageClassInfo, args.PVInfo, args.PVCInfo)
|
return predicates.NewMaxPDVolumeCountPredicate(predicates.AzureDiskVolumeFilterType, args.CSINodeInfo, args.StorageClassInfo, args.PVInfo, args.PVCInfo)
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
factory.RegisterFitPredicateFactory(
|
scheduler.RegisterFitPredicateFactory(
|
||||||
predicates.MaxCSIVolumeCountPred,
|
predicates.MaxCSIVolumeCountPred,
|
||||||
func(args factory.PluginFactoryArgs) predicates.FitPredicate {
|
func(args scheduler.PluginFactoryArgs) predicates.FitPredicate {
|
||||||
return predicates.NewCSIMaxVolumeLimitPredicate(args.CSINodeInfo, args.PVInfo, args.PVCInfo, args.StorageClassInfo)
|
return predicates.NewCSIMaxVolumeLimitPredicate(args.CSINodeInfo, args.PVInfo, args.PVCInfo, args.StorageClassInfo)
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
factory.RegisterFitPredicateFactory(
|
scheduler.RegisterFitPredicateFactory(
|
||||||
predicates.MaxCinderVolumeCountPred,
|
predicates.MaxCinderVolumeCountPred,
|
||||||
func(args factory.PluginFactoryArgs) predicates.FitPredicate {
|
func(args scheduler.PluginFactoryArgs) predicates.FitPredicate {
|
||||||
return predicates.NewMaxPDVolumeCountPredicate(predicates.CinderVolumeFilterType, args.CSINodeInfo, args.StorageClassInfo, args.PVInfo, args.PVCInfo)
|
return predicates.NewMaxPDVolumeCountPredicate(predicates.CinderVolumeFilterType, args.CSINodeInfo, args.StorageClassInfo, args.PVInfo, args.PVCInfo)
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
// Fit is determined by inter-pod affinity.
|
// Fit is determined by inter-pod affinity.
|
||||||
factory.RegisterFitPredicateFactory(
|
scheduler.RegisterFitPredicateFactory(
|
||||||
predicates.MatchInterPodAffinityPred,
|
predicates.MatchInterPodAffinityPred,
|
||||||
func(args factory.PluginFactoryArgs) predicates.FitPredicate {
|
func(args scheduler.PluginFactoryArgs) predicates.FitPredicate {
|
||||||
return predicates.NewPodAffinityPredicate(args.NodeInfo, args.PodLister)
|
return predicates.NewPodAffinityPredicate(args.NodeInfo, args.PodLister)
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
// Fit is determined by non-conflicting disk volumes.
|
// Fit is determined by non-conflicting disk volumes.
|
||||||
factory.RegisterFitPredicate(predicates.NoDiskConflictPred, predicates.NoDiskConflict)
|
scheduler.RegisterFitPredicate(predicates.NoDiskConflictPred, predicates.NoDiskConflict)
|
||||||
|
|
||||||
// GeneralPredicates are the predicates that are enforced by all Kubernetes components
|
// GeneralPredicates are the predicates that are enforced by all Kubernetes components
|
||||||
// (e.g. kubelet and all schedulers)
|
// (e.g. kubelet and all schedulers)
|
||||||
factory.RegisterFitPredicate(predicates.GeneralPred, predicates.GeneralPredicates)
|
scheduler.RegisterFitPredicate(predicates.GeneralPred, predicates.GeneralPredicates)
|
||||||
|
|
||||||
// Fit is determined by node memory pressure condition.
|
// Fit is determined by node memory pressure condition.
|
||||||
factory.RegisterFitPredicate(predicates.CheckNodeMemoryPressurePred, predicates.CheckNodeMemoryPressurePredicate)
|
scheduler.RegisterFitPredicate(predicates.CheckNodeMemoryPressurePred, predicates.CheckNodeMemoryPressurePredicate)
|
||||||
|
|
||||||
// Fit is determined by node disk pressure condition.
|
// Fit is determined by node disk pressure condition.
|
||||||
factory.RegisterFitPredicate(predicates.CheckNodeDiskPressurePred, predicates.CheckNodeDiskPressurePredicate)
|
scheduler.RegisterFitPredicate(predicates.CheckNodeDiskPressurePred, predicates.CheckNodeDiskPressurePredicate)
|
||||||
|
|
||||||
// Fit is determined by node pid pressure condition.
|
// Fit is determined by node pid pressure condition.
|
||||||
factory.RegisterFitPredicate(predicates.CheckNodePIDPressurePred, predicates.CheckNodePIDPressurePredicate)
|
scheduler.RegisterFitPredicate(predicates.CheckNodePIDPressurePred, predicates.CheckNodePIDPressurePredicate)
|
||||||
|
|
||||||
// Fit is determined by node conditions: not ready, network unavailable or out of disk.
|
// Fit is determined by node conditions: not ready, network unavailable or out of disk.
|
||||||
factory.RegisterMandatoryFitPredicate(predicates.CheckNodeConditionPred, predicates.CheckNodeConditionPredicate)
|
scheduler.RegisterMandatoryFitPredicate(predicates.CheckNodeConditionPred, predicates.CheckNodeConditionPredicate)
|
||||||
|
|
||||||
// Fit is determined based on whether a pod can tolerate all of the node's taints
|
// Fit is determined based on whether a pod can tolerate all of the node's taints
|
||||||
factory.RegisterFitPredicate(predicates.PodToleratesNodeTaintsPred, predicates.PodToleratesNodeTaints)
|
scheduler.RegisterFitPredicate(predicates.PodToleratesNodeTaintsPred, predicates.PodToleratesNodeTaints)
|
||||||
|
|
||||||
// Fit is determined by volume topology requirements.
|
// Fit is determined by volume topology requirements.
|
||||||
factory.RegisterFitPredicateFactory(
|
scheduler.RegisterFitPredicateFactory(
|
||||||
predicates.CheckVolumeBindingPred,
|
predicates.CheckVolumeBindingPred,
|
||||||
func(args factory.PluginFactoryArgs) predicates.FitPredicate {
|
func(args scheduler.PluginFactoryArgs) predicates.FitPredicate {
|
||||||
return predicates.NewVolumeBindingPredicate(args.VolumeBinder)
|
return predicates.NewVolumeBindingPredicate(args.VolumeBinder)
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
@ -17,16 +17,16 @@ limitations under the License.
|
|||||||
package defaults
|
package defaults
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"k8s.io/kubernetes/pkg/scheduler"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/algorithm"
|
"k8s.io/kubernetes/pkg/scheduler/algorithm"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/algorithm/priorities"
|
"k8s.io/kubernetes/pkg/scheduler/algorithm/priorities"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/core"
|
"k8s.io/kubernetes/pkg/scheduler/core"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/factory"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
// Register functions that extract metadata used by priorities computations.
|
// Register functions that extract metadata used by priorities computations.
|
||||||
factory.RegisterPriorityMetadataProducerFactory(
|
scheduler.RegisterPriorityMetadataProducerFactory(
|
||||||
func(args factory.PluginFactoryArgs) priorities.PriorityMetadataProducer {
|
func(args scheduler.PluginFactoryArgs) priorities.PriorityMetadataProducer {
|
||||||
return priorities.NewPriorityMetadataFactory(args.ServiceLister, args.ControllerLister, args.ReplicaSetLister, args.StatefulSetLister)
|
return priorities.NewPriorityMetadataFactory(args.ServiceLister, args.ControllerLister, args.ReplicaSetLister, args.StatefulSetLister)
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -34,10 +34,10 @@ func init() {
|
|||||||
// the number of pods (belonging to the same service) on the same node.
|
// the number of pods (belonging to the same service) on the same node.
|
||||||
// Register the factory so that it's available, but do not include it as part of the default priorities
|
// Register the factory so that it's available, but do not include it as part of the default priorities
|
||||||
// Largely replaced by "SelectorSpreadPriority", but registered for backward compatibility with 1.0
|
// Largely replaced by "SelectorSpreadPriority", but registered for backward compatibility with 1.0
|
||||||
factory.RegisterPriorityConfigFactory(
|
scheduler.RegisterPriorityConfigFactory(
|
||||||
priorities.ServiceSpreadingPriority,
|
priorities.ServiceSpreadingPriority,
|
||||||
factory.PriorityConfigFactory{
|
scheduler.PriorityConfigFactory{
|
||||||
MapReduceFunction: func(args factory.PluginFactoryArgs) (priorities.PriorityMapFunction, priorities.PriorityReduceFunction) {
|
MapReduceFunction: func(args scheduler.PluginFactoryArgs) (priorities.PriorityMapFunction, priorities.PriorityReduceFunction) {
|
||||||
return priorities.NewSelectorSpreadPriority(args.ServiceLister, algorithm.EmptyControllerLister{}, algorithm.EmptyReplicaSetLister{}, algorithm.EmptyStatefulSetLister{})
|
return priorities.NewSelectorSpreadPriority(args.ServiceLister, algorithm.EmptyControllerLister{}, algorithm.EmptyReplicaSetLister{}, algorithm.EmptyStatefulSetLister{})
|
||||||
},
|
},
|
||||||
Weight: 1,
|
Weight: 1,
|
||||||
@ -46,19 +46,19 @@ func init() {
|
|||||||
// EqualPriority is a prioritizer function that gives an equal weight of one to all nodes
|
// EqualPriority is a prioritizer function that gives an equal weight of one to all nodes
|
||||||
// Register the priority function so that its available
|
// Register the priority function so that its available
|
||||||
// but do not include it as part of the default priorities
|
// but do not include it as part of the default priorities
|
||||||
factory.RegisterPriorityMapReduceFunction(priorities.EqualPriority, core.EqualPriorityMap, nil, 1)
|
scheduler.RegisterPriorityMapReduceFunction(priorities.EqualPriority, core.EqualPriorityMap, nil, 1)
|
||||||
// Optional, cluster-autoscaler friendly priority function - give used nodes higher priority.
|
// Optional, cluster-autoscaler friendly priority function - give used nodes higher priority.
|
||||||
factory.RegisterPriorityMapReduceFunction(priorities.MostRequestedPriority, priorities.MostRequestedPriorityMap, nil, 1)
|
scheduler.RegisterPriorityMapReduceFunction(priorities.MostRequestedPriority, priorities.MostRequestedPriorityMap, nil, 1)
|
||||||
factory.RegisterPriorityMapReduceFunction(
|
scheduler.RegisterPriorityMapReduceFunction(
|
||||||
priorities.RequestedToCapacityRatioPriority,
|
priorities.RequestedToCapacityRatioPriority,
|
||||||
priorities.RequestedToCapacityRatioResourceAllocationPriorityDefault().PriorityMap,
|
priorities.RequestedToCapacityRatioResourceAllocationPriorityDefault().PriorityMap,
|
||||||
nil,
|
nil,
|
||||||
1)
|
1)
|
||||||
// spreads pods by minimizing the number of pods (belonging to the same service or replication controller) on the same node.
|
// spreads pods by minimizing the number of pods (belonging to the same service or replication controller) on the same node.
|
||||||
factory.RegisterPriorityConfigFactory(
|
scheduler.RegisterPriorityConfigFactory(
|
||||||
priorities.SelectorSpreadPriority,
|
priorities.SelectorSpreadPriority,
|
||||||
factory.PriorityConfigFactory{
|
scheduler.PriorityConfigFactory{
|
||||||
MapReduceFunction: func(args factory.PluginFactoryArgs) (priorities.PriorityMapFunction, priorities.PriorityReduceFunction) {
|
MapReduceFunction: func(args scheduler.PluginFactoryArgs) (priorities.PriorityMapFunction, priorities.PriorityReduceFunction) {
|
||||||
return priorities.NewSelectorSpreadPriority(args.ServiceLister, args.ControllerLister, args.ReplicaSetLister, args.StatefulSetLister)
|
return priorities.NewSelectorSpreadPriority(args.ServiceLister, args.ControllerLister, args.ReplicaSetLister, args.StatefulSetLister)
|
||||||
},
|
},
|
||||||
Weight: 1,
|
Weight: 1,
|
||||||
@ -66,10 +66,10 @@ func init() {
|
|||||||
)
|
)
|
||||||
// pods should be placed in the same topological domain (e.g. same node, same rack, same zone, same power domain, etc.)
|
// pods should be placed in the same topological domain (e.g. same node, same rack, same zone, same power domain, etc.)
|
||||||
// as some other pods, or, conversely, should not be placed in the same topological domain as some other pods.
|
// as some other pods, or, conversely, should not be placed in the same topological domain as some other pods.
|
||||||
factory.RegisterPriorityConfigFactory(
|
scheduler.RegisterPriorityConfigFactory(
|
||||||
priorities.InterPodAffinityPriority,
|
priorities.InterPodAffinityPriority,
|
||||||
factory.PriorityConfigFactory{
|
scheduler.PriorityConfigFactory{
|
||||||
Function: func(args factory.PluginFactoryArgs) priorities.PriorityFunction {
|
Function: func(args scheduler.PluginFactoryArgs) priorities.PriorityFunction {
|
||||||
return priorities.NewInterPodAffinityPriority(args.NodeInfo, args.HardPodAffinitySymmetricWeight)
|
return priorities.NewInterPodAffinityPriority(args.NodeInfo, args.HardPodAffinitySymmetricWeight)
|
||||||
},
|
},
|
||||||
Weight: 1,
|
Weight: 1,
|
||||||
@ -77,21 +77,21 @@ func init() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
// Prioritize nodes by least requested utilization.
|
// Prioritize nodes by least requested utilization.
|
||||||
factory.RegisterPriorityMapReduceFunction(priorities.LeastRequestedPriority, priorities.LeastRequestedPriorityMap, nil, 1)
|
scheduler.RegisterPriorityMapReduceFunction(priorities.LeastRequestedPriority, priorities.LeastRequestedPriorityMap, nil, 1)
|
||||||
|
|
||||||
// Prioritizes nodes to help achieve balanced resource usage
|
// Prioritizes nodes to help achieve balanced resource usage
|
||||||
factory.RegisterPriorityMapReduceFunction(priorities.BalancedResourceAllocation, priorities.BalancedResourceAllocationMap, nil, 1)
|
scheduler.RegisterPriorityMapReduceFunction(priorities.BalancedResourceAllocation, priorities.BalancedResourceAllocationMap, nil, 1)
|
||||||
|
|
||||||
// Set this weight large enough to override all other priority functions.
|
// Set this weight large enough to override all other priority functions.
|
||||||
// TODO: Figure out a better way to do this, maybe at same time as fixing #24720.
|
// TODO: Figure out a better way to do this, maybe at same time as fixing #24720.
|
||||||
factory.RegisterPriorityMapReduceFunction(priorities.NodePreferAvoidPodsPriority, priorities.CalculateNodePreferAvoidPodsPriorityMap, nil, 10000)
|
scheduler.RegisterPriorityMapReduceFunction(priorities.NodePreferAvoidPodsPriority, priorities.CalculateNodePreferAvoidPodsPriorityMap, nil, 10000)
|
||||||
|
|
||||||
// Prioritizes nodes that have labels matching NodeAffinity
|
// Prioritizes nodes that have labels matching NodeAffinity
|
||||||
factory.RegisterPriorityMapReduceFunction(priorities.NodeAffinityPriority, priorities.CalculateNodeAffinityPriorityMap, priorities.CalculateNodeAffinityPriorityReduce, 1)
|
scheduler.RegisterPriorityMapReduceFunction(priorities.NodeAffinityPriority, priorities.CalculateNodeAffinityPriorityMap, priorities.CalculateNodeAffinityPriorityReduce, 1)
|
||||||
|
|
||||||
// Prioritizes nodes that marked with taint which pod can tolerate.
|
// Prioritizes nodes that marked with taint which pod can tolerate.
|
||||||
factory.RegisterPriorityMapReduceFunction(priorities.TaintTolerationPriority, priorities.ComputeTaintTolerationPriorityMap, priorities.ComputeTaintTolerationPriorityReduce, 1)
|
scheduler.RegisterPriorityMapReduceFunction(priorities.TaintTolerationPriority, priorities.ComputeTaintTolerationPriorityMap, priorities.ComputeTaintTolerationPriorityReduce, 1)
|
||||||
|
|
||||||
// ImageLocalityPriority prioritizes nodes that have images requested by the pod present.
|
// ImageLocalityPriority prioritizes nodes that have images requested by the pod present.
|
||||||
factory.RegisterPriorityMapReduceFunction(priorities.ImageLocalityPriority, priorities.ImageLocalityPriorityMap, nil, 1)
|
scheduler.RegisterPriorityMapReduceFunction(priorities.ImageLocalityPriority, priorities.ImageLocalityPriorityMap, nil, 1)
|
||||||
}
|
}
|
||||||
|
@ -23,17 +23,17 @@ import (
|
|||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||||
featuregatetesting "k8s.io/component-base/featuregate/testing"
|
featuregatetesting "k8s.io/component-base/featuregate/testing"
|
||||||
"k8s.io/kubernetes/pkg/features"
|
"k8s.io/kubernetes/pkg/features"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/factory"
|
"k8s.io/kubernetes/pkg/scheduler"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
algorithmProviderNames = []string{
|
algorithmProviderNames = []string{
|
||||||
factory.DefaultProvider,
|
scheduler.DefaultProvider,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestDefaultConfigExists(t *testing.T) {
|
func TestDefaultConfigExists(t *testing.T) {
|
||||||
p, err := factory.GetAlgorithmProvider(factory.DefaultProvider)
|
p, err := scheduler.GetAlgorithmProvider(scheduler.DefaultProvider)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("error retrieving default provider: %v", err)
|
t.Errorf("error retrieving default provider: %v", err)
|
||||||
}
|
}
|
||||||
@ -48,7 +48,7 @@ func TestDefaultConfigExists(t *testing.T) {
|
|||||||
func TestAlgorithmProviders(t *testing.T) {
|
func TestAlgorithmProviders(t *testing.T) {
|
||||||
for _, pn := range algorithmProviderNames {
|
for _, pn := range algorithmProviderNames {
|
||||||
t.Run(pn, func(t *testing.T) {
|
t.Run(pn, func(t *testing.T) {
|
||||||
p, err := factory.GetAlgorithmProvider(pn)
|
p, err := scheduler.GetAlgorithmProvider(pn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error retrieving provider: %v", err)
|
t.Fatalf("error retrieving provider: %v", err)
|
||||||
}
|
}
|
||||||
@ -57,14 +57,14 @@ func TestAlgorithmProviders(t *testing.T) {
|
|||||||
}
|
}
|
||||||
for _, pf := range p.PriorityFunctionKeys.List() {
|
for _, pf := range p.PriorityFunctionKeys.List() {
|
||||||
t.Run(fmt.Sprintf("priorityfunction/%s", pf), func(t *testing.T) {
|
t.Run(fmt.Sprintf("priorityfunction/%s", pf), func(t *testing.T) {
|
||||||
if !factory.IsPriorityFunctionRegistered(pf) {
|
if !scheduler.IsPriorityFunctionRegistered(pf) {
|
||||||
t.Errorf("priority function is not registered but is used in the algorithm provider")
|
t.Errorf("priority function is not registered but is used in the algorithm provider")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
for _, fp := range p.FitPredicateKeys.List() {
|
for _, fp := range p.FitPredicateKeys.List() {
|
||||||
t.Run(fmt.Sprintf("fitpredicate/%s", fp), func(t *testing.T) {
|
t.Run(fmt.Sprintf("fitpredicate/%s", fp), func(t *testing.T) {
|
||||||
if !factory.IsFitPredicateRegistered(fp) {
|
if !scheduler.IsFitPredicateRegistered(fp) {
|
||||||
t.Errorf("fit predicate is not registered but is used in the algorithm provider")
|
t.Errorf("fit predicate is not registered but is used in the algorithm provider")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -76,7 +76,7 @@ func TestAlgorithmProviders(t *testing.T) {
|
|||||||
func TestApplyFeatureGates(t *testing.T) {
|
func TestApplyFeatureGates(t *testing.T) {
|
||||||
for _, pn := range algorithmProviderNames {
|
for _, pn := range algorithmProviderNames {
|
||||||
t.Run(pn, func(t *testing.T) {
|
t.Run(pn, func(t *testing.T) {
|
||||||
p, err := factory.GetAlgorithmProvider(pn)
|
p, err := scheduler.GetAlgorithmProvider(pn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Error retrieving provider: %v", err)
|
t.Fatalf("Error retrieving provider: %v", err)
|
||||||
}
|
}
|
||||||
@ -98,7 +98,7 @@ func TestApplyFeatureGates(t *testing.T) {
|
|||||||
|
|
||||||
for _, pn := range algorithmProviderNames {
|
for _, pn := range algorithmProviderNames {
|
||||||
t.Run(pn, func(t *testing.T) {
|
t.Run(pn, func(t *testing.T) {
|
||||||
p, err := factory.GetAlgorithmProvider(pn)
|
p, err := scheduler.GetAlgorithmProvider(pn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Error retrieving '%s' provider: %v", pn, err)
|
t.Fatalf("Error retrieving '%s' provider: %v", pn, err)
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,6 @@ go_test(
|
|||||||
"//pkg/scheduler/api:go_default_library",
|
"//pkg/scheduler/api:go_default_library",
|
||||||
"//pkg/scheduler/apis/config:go_default_library",
|
"//pkg/scheduler/apis/config:go_default_library",
|
||||||
"//pkg/scheduler/core:go_default_library",
|
"//pkg/scheduler/core:go_default_library",
|
||||||
"//pkg/scheduler/factory:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
||||||
|
@ -33,7 +33,6 @@ import (
|
|||||||
kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||||
schedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
schedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/core"
|
"k8s.io/kubernetes/pkg/scheduler/core"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/factory"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestCompatibility_v1_Scheduler(t *testing.T) {
|
func TestCompatibility_v1_Scheduler(t *testing.T) {
|
||||||
@ -1178,8 +1177,8 @@ func TestCompatibility_v1_Scheduler(t *testing.T) {
|
|||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
registeredPredicates := sets.NewString(factory.ListRegisteredFitPredicates()...)
|
registeredPredicates := sets.NewString(scheduler.ListRegisteredFitPredicates()...)
|
||||||
registeredPriorities := sets.NewString(factory.ListRegisteredPriorityFunctions()...)
|
registeredPriorities := sets.NewString(scheduler.ListRegisteredPriorityFunctions()...)
|
||||||
seenPredicates := sets.NewString()
|
seenPredicates := sets.NewString()
|
||||||
seenPriorities := sets.NewString()
|
seenPriorities := sets.NewString()
|
||||||
mandatoryPredicates := sets.NewString("CheckNodeCondition")
|
mandatoryPredicates := sets.NewString("CheckNodeCondition")
|
||||||
|
@ -23,7 +23,6 @@ import (
|
|||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
"k8s.io/apimachinery/pkg/api/resource"
|
"k8s.io/apimachinery/pkg/api/resource"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/factory"
|
|
||||||
|
|
||||||
fakecache "k8s.io/kubernetes/pkg/scheduler/internal/cache/fake"
|
fakecache "k8s.io/kubernetes/pkg/scheduler/internal/cache/fake"
|
||||||
)
|
)
|
||||||
@ -106,7 +105,7 @@ func TestSkipPodUpdate(t *testing.T) {
|
|||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
t.Run(test.name, func(t *testing.T) {
|
t.Run(test.name, func(t *testing.T) {
|
||||||
c := NewFromConfig(&factory.Config{
|
c := NewFromConfig(&Config{
|
||||||
SchedulerCache: &fakecache.Cache{
|
SchedulerCache: &fakecache.Cache{
|
||||||
IsAssumedPodFunc: test.isAssumedPodFunc,
|
IsAssumedPodFunc: test.isAssumedPodFunc,
|
||||||
GetPodFunc: test.getPodFunc,
|
GetPodFunc: test.getPodFunc,
|
||||||
|
@ -14,9 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Package factory can set up a scheduler. This code is here instead of
|
package scheduler
|
||||||
// cmd/scheduler for both testability and reuse.
|
|
||||||
package factory
|
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
@ -1,102 +0,0 @@
|
|||||||
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
|
|
||||||
|
|
||||||
go_library(
|
|
||||||
name = "go_default_library",
|
|
||||||
srcs = [
|
|
||||||
"factory.go",
|
|
||||||
"plugins.go",
|
|
||||||
],
|
|
||||||
importpath = "k8s.io/kubernetes/pkg/scheduler/factory",
|
|
||||||
visibility = ["//visibility:public"],
|
|
||||||
deps = [
|
|
||||||
"//pkg/features:go_default_library",
|
|
||||||
"//pkg/scheduler/algorithm:go_default_library",
|
|
||||||
"//pkg/scheduler/algorithm/predicates:go_default_library",
|
|
||||||
"//pkg/scheduler/algorithm/priorities:go_default_library",
|
|
||||||
"//pkg/scheduler/api:go_default_library",
|
|
||||||
"//pkg/scheduler/api/validation:go_default_library",
|
|
||||||
"//pkg/scheduler/apis/config:go_default_library",
|
|
||||||
"//pkg/scheduler/core:go_default_library",
|
|
||||||
"//pkg/scheduler/framework/plugins:go_default_library",
|
|
||||||
"//pkg/scheduler/framework/v1alpha1:go_default_library",
|
|
||||||
"//pkg/scheduler/internal/cache:go_default_library",
|
|
||||||
"//pkg/scheduler/internal/cache/debugger:go_default_library",
|
|
||||||
"//pkg/scheduler/internal/queue:go_default_library",
|
|
||||||
"//pkg/scheduler/volumebinder:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/informers:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/informers/apps/v1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/informers/core/v1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/informers/policy/v1beta1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/informers/storage/v1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/informers/storage/v1beta1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/listers/apps/v1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/listers/core/v1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/listers/policy/v1beta1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/listers/storage/v1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/listers/storage/v1beta1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/tools/cache:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/tools/events:go_default_library",
|
|
||||||
"//vendor/k8s.io/klog:go_default_library",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
go_test(
|
|
||||||
name = "go_default_test",
|
|
||||||
srcs = [
|
|
||||||
"factory_test.go",
|
|
||||||
"plugins_test.go",
|
|
||||||
],
|
|
||||||
embed = [":go_default_library"],
|
|
||||||
deps = [
|
|
||||||
"//pkg/api/testing:go_default_library",
|
|
||||||
"//pkg/scheduler/algorithm:go_default_library",
|
|
||||||
"//pkg/scheduler/algorithm/predicates:go_default_library",
|
|
||||||
"//pkg/scheduler/algorithm/priorities:go_default_library",
|
|
||||||
"//pkg/scheduler/api:go_default_library",
|
|
||||||
"//pkg/scheduler/api/latest:go_default_library",
|
|
||||||
"//pkg/scheduler/apis/config:go_default_library",
|
|
||||||
"//pkg/scheduler/apis/extender/v1:go_default_library",
|
|
||||||
"//pkg/scheduler/framework/plugins:go_default_library",
|
|
||||||
"//pkg/scheduler/framework/v1alpha1:go_default_library",
|
|
||||||
"//pkg/scheduler/internal/cache:go_default_library",
|
|
||||||
"//pkg/scheduler/internal/queue:go_default_library",
|
|
||||||
"//pkg/scheduler/nodeinfo:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/informers:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/kubernetes/typed/core/v1/fake:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/testing:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/tools/cache:go_default_library",
|
|
||||||
"//vendor/github.com/google/go-cmp/cmp:go_default_library",
|
|
||||||
"//vendor/github.com/stretchr/testify/assert:go_default_library",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
filegroup(
|
|
||||||
name = "package-srcs",
|
|
||||||
srcs = glob(["**"]),
|
|
||||||
tags = ["automanaged"],
|
|
||||||
visibility = ["//visibility:private"],
|
|
||||||
)
|
|
||||||
|
|
||||||
filegroup(
|
|
||||||
name = "all-srcs",
|
|
||||||
srcs = [":package-srcs"],
|
|
||||||
tags = ["automanaged"],
|
|
||||||
visibility = ["//visibility:public"],
|
|
||||||
)
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package factory
|
package scheduler
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
@ -583,7 +583,7 @@ func TestGetBinderFunc(t *testing.T) {
|
|||||||
extenders: []algorithm.SchedulerExtender{
|
extenders: []algorithm.SchedulerExtender{
|
||||||
&fakeExtender{isBinder: false, interestedPodName: "pod0"},
|
&fakeExtender{isBinder: false, interestedPodName: "pod0"},
|
||||||
},
|
},
|
||||||
expectedBinderType: "*factory.binder",
|
expectedBinderType: "*scheduler.binder",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "one of the extenders is a binder and interested in pod",
|
name: "one of the extenders is a binder and interested in pod",
|
||||||
@ -592,7 +592,7 @@ func TestGetBinderFunc(t *testing.T) {
|
|||||||
&fakeExtender{isBinder: false, interestedPodName: "pod0"},
|
&fakeExtender{isBinder: false, interestedPodName: "pod0"},
|
||||||
&fakeExtender{isBinder: true, interestedPodName: "pod0"},
|
&fakeExtender{isBinder: true, interestedPodName: "pod0"},
|
||||||
},
|
},
|
||||||
expectedBinderType: "*factory.fakeExtender",
|
expectedBinderType: "*scheduler.fakeExtender",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "one of the extenders is a binder, but not interested in pod",
|
name: "one of the extenders is a binder, but not interested in pod",
|
||||||
@ -601,7 +601,7 @@ func TestGetBinderFunc(t *testing.T) {
|
|||||||
&fakeExtender{isBinder: false, interestedPodName: "pod1"},
|
&fakeExtender{isBinder: false, interestedPodName: "pod1"},
|
||||||
&fakeExtender{isBinder: true, interestedPodName: "pod0"},
|
&fakeExtender{isBinder: true, interestedPodName: "pod0"},
|
||||||
},
|
},
|
||||||
expectedBinderType: "*factory.binder",
|
expectedBinderType: "*scheduler.binder",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
@ -37,7 +37,6 @@ import (
|
|||||||
latestschedulerapi "k8s.io/kubernetes/pkg/scheduler/api/latest"
|
latestschedulerapi "k8s.io/kubernetes/pkg/scheduler/api/latest"
|
||||||
kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/core"
|
"k8s.io/kubernetes/pkg/scheduler/core"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/factory"
|
|
||||||
frameworkplugins "k8s.io/kubernetes/pkg/scheduler/framework/plugins"
|
frameworkplugins "k8s.io/kubernetes/pkg/scheduler/framework/plugins"
|
||||||
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"
|
||||||
@ -78,7 +77,7 @@ type Scheduler struct {
|
|||||||
SchedulerCache internalcache.Cache
|
SchedulerCache internalcache.Cache
|
||||||
|
|
||||||
Algorithm core.ScheduleAlgorithm
|
Algorithm core.ScheduleAlgorithm
|
||||||
GetBinder func(pod *v1.Pod) factory.Binder
|
GetBinder func(pod *v1.Pod) Binder
|
||||||
// PodConditionUpdater is used only in case of scheduling errors. If we succeed
|
// PodConditionUpdater is used only in case of scheduling errors. If we succeed
|
||||||
// with scheduling, PodScheduled condition will be updated in apiserver in /bind
|
// with scheduling, PodScheduled condition will be updated in apiserver in /bind
|
||||||
// handler so that binding and setting PodCondition it is atomic.
|
// handler so that binding and setting PodCondition it is atomic.
|
||||||
@ -289,7 +288,7 @@ func New(client clientset.Interface,
|
|||||||
registry.Merge(options.frameworkOutOfTreeRegistry)
|
registry.Merge(options.frameworkOutOfTreeRegistry)
|
||||||
|
|
||||||
// Set up the configurator which can create schedulers from configs.
|
// Set up the configurator which can create schedulers from configs.
|
||||||
configurator := factory.NewConfigFactory(&factory.ConfigFactoryArgs{
|
configurator := NewConfigFactory(&ConfigFactoryArgs{
|
||||||
Client: client,
|
Client: client,
|
||||||
InformerFactory: informerFactory,
|
InformerFactory: informerFactory,
|
||||||
PodInformer: podInformer,
|
PodInformer: podInformer,
|
||||||
@ -316,7 +315,7 @@ func New(client clientset.Interface,
|
|||||||
Plugins: options.frameworkPlugins,
|
Plugins: options.frameworkPlugins,
|
||||||
PluginConfig: options.frameworkPluginConfig,
|
PluginConfig: options.frameworkPluginConfig,
|
||||||
})
|
})
|
||||||
var config *factory.Config
|
var config *Config
|
||||||
source := schedulerAlgorithmSource
|
source := schedulerAlgorithmSource
|
||||||
switch {
|
switch {
|
||||||
case source.Provider != nil:
|
case source.Provider != nil:
|
||||||
@ -398,7 +397,7 @@ func initPolicyFromConfigMap(client clientset.Interface, policyRef *kubeschedule
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewFromConfig returns a new scheduler using the provided Config.
|
// NewFromConfig returns a new scheduler using the provided Config.
|
||||||
func NewFromConfig(config *factory.Config) *Scheduler {
|
func NewFromConfig(config *Config) *Scheduler {
|
||||||
metrics.Register()
|
metrics.Register()
|
||||||
return &Scheduler{
|
return &Scheduler{
|
||||||
SchedulerCache: config.SchedulerCache,
|
SchedulerCache: config.SchedulerCache,
|
||||||
|
@ -48,7 +48,6 @@ import (
|
|||||||
schedulerapi "k8s.io/kubernetes/pkg/scheduler/api"
|
schedulerapi "k8s.io/kubernetes/pkg/scheduler/api"
|
||||||
kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/core"
|
"k8s.io/kubernetes/pkg/scheduler/core"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/factory"
|
|
||||||
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"
|
||||||
fakecache "k8s.io/kubernetes/pkg/scheduler/internal/cache/fake"
|
fakecache "k8s.io/kubernetes/pkg/scheduler/internal/cache/fake"
|
||||||
@ -176,15 +175,15 @@ func TestSchedulerCreation(t *testing.T) {
|
|||||||
testSource := "testProvider"
|
testSource := "testProvider"
|
||||||
eventBroadcaster := events.NewBroadcaster(&events.EventSinkImpl{Interface: client.EventsV1beta1().Events("")})
|
eventBroadcaster := events.NewBroadcaster(&events.EventSinkImpl{Interface: client.EventsV1beta1().Events("")})
|
||||||
|
|
||||||
factory.RegisterFitPredicate("PredicateOne", PredicateOne)
|
RegisterFitPredicate("PredicateOne", PredicateOne)
|
||||||
factory.RegisterPriorityFunction("PriorityOne", PriorityOne, 1)
|
RegisterPriorityFunction("PriorityOne", PriorityOne, 1)
|
||||||
factory.RegisterAlgorithmProvider(testSource, sets.NewString("PredicateOne"), sets.NewString("PriorityOne"))
|
RegisterAlgorithmProvider(testSource, sets.NewString("PredicateOne"), sets.NewString("PriorityOne"))
|
||||||
|
|
||||||
stopCh := make(chan struct{})
|
stopCh := make(chan struct{})
|
||||||
defer close(stopCh)
|
defer close(stopCh)
|
||||||
_, err := New(client,
|
_, err := New(client,
|
||||||
informerFactory,
|
informerFactory,
|
||||||
factory.NewPodInformer(client, 0),
|
NewPodInformer(client, 0),
|
||||||
eventBroadcaster.NewRecorder(scheme.Scheme, "scheduler"),
|
eventBroadcaster.NewRecorder(scheme.Scheme, "scheduler"),
|
||||||
kubeschedulerconfig.SchedulerAlgorithmSource{Provider: &testSource},
|
kubeschedulerconfig.SchedulerAlgorithmSource{Provider: &testSource},
|
||||||
stopCh,
|
stopCh,
|
||||||
@ -276,7 +275,7 @@ func TestScheduler(t *testing.T) {
|
|||||||
s := &Scheduler{
|
s := &Scheduler{
|
||||||
SchedulerCache: sCache,
|
SchedulerCache: sCache,
|
||||||
Algorithm: item.algo,
|
Algorithm: item.algo,
|
||||||
GetBinder: func(pod *v1.Pod) factory.Binder {
|
GetBinder: func(pod *v1.Pod) Binder {
|
||||||
return fakeBinder{func(b *v1.Binding) error {
|
return fakeBinder{func(b *v1.Binding) error {
|
||||||
gotBinding = b
|
gotBinding = b
|
||||||
return item.injectBindError
|
return item.injectBindError
|
||||||
@ -660,7 +659,7 @@ func setupTestScheduler(queuedPodStore *clientcache.FIFO, scache internalcache.C
|
|||||||
sched := &Scheduler{
|
sched := &Scheduler{
|
||||||
SchedulerCache: scache,
|
SchedulerCache: scache,
|
||||||
Algorithm: algo,
|
Algorithm: algo,
|
||||||
GetBinder: func(pod *v1.Pod) factory.Binder {
|
GetBinder: func(pod *v1.Pod) Binder {
|
||||||
return fakeBinder{func(b *v1.Binding) error {
|
return fakeBinder{func(b *v1.Binding) error {
|
||||||
bindingChan <- b
|
bindingChan <- b
|
||||||
return nil
|
return nil
|
||||||
@ -710,7 +709,7 @@ func setupTestSchedulerLongBindingWithRetry(queuedPodStore *clientcache.FIFO, sc
|
|||||||
sched := &Scheduler{
|
sched := &Scheduler{
|
||||||
SchedulerCache: scache,
|
SchedulerCache: scache,
|
||||||
Algorithm: algo,
|
Algorithm: algo,
|
||||||
GetBinder: func(pod *v1.Pod) factory.Binder {
|
GetBinder: func(pod *v1.Pod) Binder {
|
||||||
return fakeBinder{func(b *v1.Binding) error {
|
return fakeBinder{func(b *v1.Binding) error {
|
||||||
time.Sleep(bindingTime)
|
time.Sleep(bindingTime)
|
||||||
bindingChan <- b
|
bindingChan <- b
|
||||||
|
@ -33,7 +33,6 @@ go_test(
|
|||||||
"//pkg/scheduler/api:go_default_library",
|
"//pkg/scheduler/api:go_default_library",
|
||||||
"//pkg/scheduler/apis/config:go_default_library",
|
"//pkg/scheduler/apis/config:go_default_library",
|
||||||
"//pkg/scheduler/apis/extender/v1:go_default_library",
|
"//pkg/scheduler/apis/extender/v1:go_default_library",
|
||||||
"//pkg/scheduler/factory:go_default_library",
|
|
||||||
"//pkg/scheduler/framework/v1alpha1:go_default_library",
|
"//pkg/scheduler/framework/v1alpha1:go_default_library",
|
||||||
"//pkg/scheduler/nodeinfo:go_default_library",
|
"//pkg/scheduler/nodeinfo:go_default_library",
|
||||||
"//pkg/scheduler/testing:go_default_library",
|
"//pkg/scheduler/testing:go_default_library",
|
||||||
@ -96,7 +95,6 @@ go_library(
|
|||||||
"//pkg/scheduler/api:go_default_library",
|
"//pkg/scheduler/api:go_default_library",
|
||||||
"//pkg/scheduler/api/latest:go_default_library",
|
"//pkg/scheduler/api/latest:go_default_library",
|
||||||
"//pkg/scheduler/apis/config:go_default_library",
|
"//pkg/scheduler/apis/config:go_default_library",
|
||||||
"//pkg/scheduler/factory:go_default_library",
|
|
||||||
"//pkg/util/taints:go_default_library",
|
"//pkg/util/taints:go_default_library",
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/policy/v1beta1:go_default_library",
|
"//staging/src/k8s.io/api/policy/v1beta1:go_default_library",
|
||||||
|
@ -42,7 +42,6 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/scheduler/algorithm/predicates"
|
"k8s.io/kubernetes/pkg/scheduler/algorithm/predicates"
|
||||||
_ "k8s.io/kubernetes/pkg/scheduler/algorithmprovider"
|
_ "k8s.io/kubernetes/pkg/scheduler/algorithmprovider"
|
||||||
kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/factory"
|
|
||||||
schedulerframework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
|
schedulerframework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
|
||||||
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
|
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
|
||||||
"k8s.io/kubernetes/test/integration/framework"
|
"k8s.io/kubernetes/test/integration/framework"
|
||||||
@ -86,10 +85,10 @@ func TestSchedulerCreationFromConfigMap(t *testing.T) {
|
|||||||
informerFactory := informers.NewSharedInformerFactory(clientSet, 0)
|
informerFactory := informers.NewSharedInformerFactory(clientSet, 0)
|
||||||
|
|
||||||
// Pre-register some predicate and priority functions
|
// Pre-register some predicate and priority functions
|
||||||
factory.RegisterFitPredicate("PredicateOne", PredicateOne)
|
scheduler.RegisterFitPredicate("PredicateOne", PredicateOne)
|
||||||
factory.RegisterFitPredicate("PredicateTwo", PredicateTwo)
|
scheduler.RegisterFitPredicate("PredicateTwo", PredicateTwo)
|
||||||
factory.RegisterPriorityFunction("PriorityOne", PriorityOne, 1)
|
scheduler.RegisterPriorityFunction("PriorityOne", PriorityOne, 1)
|
||||||
factory.RegisterPriorityFunction("PriorityTwo", PriorityTwo, 1)
|
scheduler.RegisterPriorityFunction("PriorityTwo", PriorityTwo, 1)
|
||||||
|
|
||||||
for i, test := range []struct {
|
for i, test := range []struct {
|
||||||
policy string
|
policy string
|
||||||
@ -255,7 +254,7 @@ priorities: []
|
|||||||
|
|
||||||
sched, err := scheduler.New(clientSet,
|
sched, err := scheduler.New(clientSet,
|
||||||
informerFactory,
|
informerFactory,
|
||||||
factory.NewPodInformer(clientSet, 0),
|
scheduler.NewPodInformer(clientSet, 0),
|
||||||
eventBroadcaster.NewRecorder(legacyscheme.Scheme, v1.DefaultSchedulerName),
|
eventBroadcaster.NewRecorder(legacyscheme.Scheme, v1.DefaultSchedulerName),
|
||||||
kubeschedulerconfig.SchedulerAlgorithmSource{
|
kubeschedulerconfig.SchedulerAlgorithmSource{
|
||||||
Policy: &kubeschedulerconfig.SchedulerPolicySource{
|
Policy: &kubeschedulerconfig.SchedulerPolicySource{
|
||||||
@ -318,7 +317,7 @@ func TestSchedulerCreationFromNonExistentConfigMap(t *testing.T) {
|
|||||||
|
|
||||||
_, err := scheduler.New(clientSet,
|
_, err := scheduler.New(clientSet,
|
||||||
informerFactory,
|
informerFactory,
|
||||||
factory.NewPodInformer(clientSet, 0),
|
scheduler.NewPodInformer(clientSet, 0),
|
||||||
eventBroadcaster.NewRecorder(legacyscheme.Scheme, v1.DefaultSchedulerName),
|
eventBroadcaster.NewRecorder(legacyscheme.Scheme, v1.DefaultSchedulerName),
|
||||||
kubeschedulerconfig.SchedulerAlgorithmSource{
|
kubeschedulerconfig.SchedulerAlgorithmSource{
|
||||||
Policy: &kubeschedulerconfig.SchedulerPolicySource{
|
Policy: &kubeschedulerconfig.SchedulerPolicySource{
|
||||||
|
@ -55,7 +55,6 @@ import (
|
|||||||
// Register defaults in pkg/scheduler/algorithmprovider.
|
// Register defaults in pkg/scheduler/algorithmprovider.
|
||||||
_ "k8s.io/kubernetes/pkg/scheduler/algorithmprovider"
|
_ "k8s.io/kubernetes/pkg/scheduler/algorithmprovider"
|
||||||
schedulerapi "k8s.io/kubernetes/pkg/scheduler/api"
|
schedulerapi "k8s.io/kubernetes/pkg/scheduler/api"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/factory"
|
|
||||||
taintutils "k8s.io/kubernetes/pkg/util/taints"
|
taintutils "k8s.io/kubernetes/pkg/util/taints"
|
||||||
"k8s.io/kubernetes/test/integration/framework"
|
"k8s.io/kubernetes/test/integration/framework"
|
||||||
imageutils "k8s.io/kubernetes/test/utils/image"
|
imageutils "k8s.io/kubernetes/test/utils/image"
|
||||||
@ -160,7 +159,7 @@ func initTestSchedulerWithOptions(
|
|||||||
|
|
||||||
// create independent pod informer if required
|
// create independent pod informer if required
|
||||||
if setPodInformer {
|
if setPodInformer {
|
||||||
podInformer = factory.NewPodInformer(context.clientSet, 12*time.Hour)
|
podInformer = scheduler.NewPodInformer(context.clientSet, 12*time.Hour)
|
||||||
} else {
|
} else {
|
||||||
podInformer = context.informerFactory.Core().V1().Pods()
|
podInformer = context.informerFactory.Core().V1().Pods()
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ go_test(
|
|||||||
tags = ["integration"],
|
tags = ["integration"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/features:go_default_library",
|
"//pkg/features:go_default_library",
|
||||||
"//pkg/scheduler/factory:go_default_library",
|
"//pkg/scheduler:go_default_library",
|
||||||
"//pkg/volume/util:go_default_library",
|
"//pkg/volume/util:go_default_library",
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/storage/v1beta1:go_default_library",
|
"//staging/src/k8s.io/api/storage/v1beta1:go_default_library",
|
||||||
|
@ -33,7 +33,7 @@ import (
|
|||||||
csilibplugins "k8s.io/csi-translation-lib/plugins"
|
csilibplugins "k8s.io/csi-translation-lib/plugins"
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
"k8s.io/kubernetes/pkg/features"
|
"k8s.io/kubernetes/pkg/features"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/factory"
|
"k8s.io/kubernetes/pkg/scheduler"
|
||||||
"k8s.io/kubernetes/pkg/volume/util"
|
"k8s.io/kubernetes/pkg/volume/util"
|
||||||
"k8s.io/kubernetes/test/integration/framework"
|
"k8s.io/kubernetes/test/integration/framework"
|
||||||
testutils "k8s.io/kubernetes/test/utils"
|
testutils "k8s.io/kubernetes/test/utils"
|
||||||
@ -364,7 +364,7 @@ func benchmarkScheduling(numNodes, numExistingPods, minPods int,
|
|||||||
finalFunc, clientset := mustSetupScheduler()
|
finalFunc, clientset := mustSetupScheduler()
|
||||||
defer finalFunc()
|
defer finalFunc()
|
||||||
|
|
||||||
podInformer := factory.NewPodInformer(clientset, 0)
|
podInformer := scheduler.NewPodInformer(clientset, 0)
|
||||||
nodePreparer := framework.NewIntegrationTestNodePreparer(
|
nodePreparer := framework.NewIntegrationTestNodePreparer(
|
||||||
clientset,
|
clientset,
|
||||||
[]testutils.CountToStrategy{{Count: numNodes, Strategy: nodeStrategy}},
|
[]testutils.CountToStrategy{{Count: numNodes, Strategy: nodeStrategy}},
|
||||||
|
@ -31,7 +31,7 @@ import (
|
|||||||
coreinformers "k8s.io/client-go/informers/core/v1"
|
coreinformers "k8s.io/client-go/informers/core/v1"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
"k8s.io/client-go/tools/cache"
|
"k8s.io/client-go/tools/cache"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/factory"
|
"k8s.io/kubernetes/pkg/scheduler"
|
||||||
testutils "k8s.io/kubernetes/test/utils"
|
testutils "k8s.io/kubernetes/test/utils"
|
||||||
|
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
@ -138,7 +138,7 @@ func schedulePods(config *testConfig) int32 {
|
|||||||
minQPS := int32(math.MaxInt32)
|
minQPS := int32(math.MaxInt32)
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
|
|
||||||
podInformer := factory.NewPodInformer(config.clientset, 0)
|
podInformer := scheduler.NewPodInformer(config.clientset, 0)
|
||||||
// Bake in time for the first pod scheduling event.
|
// Bake in time for the first pod scheduling event.
|
||||||
for {
|
for {
|
||||||
time.Sleep(50 * time.Millisecond)
|
time.Sleep(50 * time.Millisecond)
|
||||||
|
Loading…
Reference in New Issue
Block a user