Documentation
¶
Index ¶
- Constants
- func AddAllEventHandlers(sched *Scheduler, schedulerName string, ...)
- func ApplyPredicatesAndPriorities(s *Snapshot)
- func InsertPredicateKeyToAlgoProvider(providerName, key string) error
- func InsertPredicateKeyToAlgorithmProviderMap(key string)
- func InsertPriorityKeyToAlgorithmProviderMap(key string)
- func IsFitPredicateRegistered(name string) bool
- func IsPriorityFunctionRegistered(name string) bool
- func ListAlgorithmProviders() string
- func ListRegisteredFitPredicates() []string
- func ListRegisteredPriorityFunctions() []string
- func MakeDefaultErrorFunc(client clientset.Interface, podQueue internalqueue.SchedulingQueue, ...) func(*framework.PodInfo, error)
- func NewPodInformer(client clientset.Interface, resyncPeriod time.Duration) coreinformers.PodInformer
- func RegisterAlgorithmProvider(name string, predicateKeys, priorityKeys sets.String) string
- func RegisterCustomFitPredicate(policy schedulerapi.PredicatePolicy) string
- func RegisterCustomPriorityFunction(policy schedulerapi.PriorityPolicy) string
- func RegisterFitPredicate(name string, predicate predicates.FitPredicate) string
- func RegisterFitPredicateFactory(name string, predicateFactory FitPredicateFactory) string
- func RegisterMandatoryFitPredicate(name string, predicate predicates.FitPredicate) string
- func RegisterPredicateMetadataProducer(producer predicates.PredicateMetadataProducer)
- func RegisterPriorityConfigFactory(name string, pcf PriorityConfigFactory) string
- func RegisterPriorityFunction(name string, function priorities.PriorityFunction, weight int) string
- func RegisterPriorityMapReduceFunction(name string, mapFunction priorities.PriorityMapFunction, ...) string
- func RegisterPriorityMetadataProducerFactory(factory PriorityMetadataProducerFactory)
- func RemoveFitPredicate(name string)
- func RemovePredicateKeyFromAlgoProvider(providerName, key string) error
- func RemovePredicateKeyFromAlgorithmProviderMap(key string)
- type AlgorithmProviderConfig
- type Binder
- type Config
- type ConfigFactoryArgs
- type Configurator
- func (c *Configurator) Create() (*Config, error)
- func (c *Configurator) CreateFromConfig(policy schedulerapi.Policy) (*Config, error)
- func (c *Configurator) CreateFromKeys(predicateKeys, priorityKeys sets.String, ...) (*Config, error)
- func (c *Configurator) CreateFromProvider(providerName string) (*Config, error)
- func (c *Configurator) GetHardPodAffinitySymmetricWeight() int32
- func (c *Configurator) GetPredicateMetadataProducer() (predicates.PredicateMetadataProducer, error)
- type FitPredicateFactory
- type Option
- func WithBindTimeoutSeconds(bindTimeoutSeconds int64) Option
- func WithFrameworkConfigProducerRegistry(registry *frameworkplugins.ConfigProducerRegistry) Option
- func WithFrameworkDefaultRegistry(registry framework.Registry) Option
- func WithFrameworkOutOfTreeRegistry(registry framework.Registry) Option
- func WithFrameworkPluginConfig(pluginConfig []kubeschedulerconfig.PluginConfig) Option
- func WithFrameworkPlugins(plugins *kubeschedulerconfig.Plugins) Option
- func WithHardPodAffinitySymmetricWeight(hardPodAffinitySymmetricWeight int32) Option
- func WithName(schedulerName string) Option
- func WithPercentageOfNodesToScore(percentageOfNodesToScore int32) Option
- func WithPodInitialBackoffSeconds(podInitialBackoffSeconds int64) Option
- func WithPodMaxBackoffSeconds(podMaxBackoffSeconds int64) Option
- func WithPreemptionDisabled(disablePreemption bool) Option
- type PluginFactoryArgs
- type PredicateMetadataProducerFactory
- type PriorityConfigFactory
- type PriorityFunctionFactory
- type PriorityFunctionFactory2
- type PriorityMetadataProducerFactory
- type Scheduler
- type Snapshot
Constants ¶
const ( // BindTimeoutSeconds defines the default bind timeout BindTimeoutSeconds = 100 // SchedulerError is the reason recorded for events when an error occurs during scheduling a pod. SchedulerError = "SchedulerError" )
const (
// DefaultProvider defines the default algorithm provider name.
DefaultProvider = "DefaultProvider"
)
Variables ¶
This section is empty.
Functions ¶
func AddAllEventHandlers ¶
func AddAllEventHandlers( sched *Scheduler, schedulerName string, informerFactory informers.SharedInformerFactory, podInformer coreinformers.PodInformer, )
AddAllEventHandlers is a helper function used in tests and in Scheduler to add event handlers for various informers.
func ApplyPredicatesAndPriorities ¶
func ApplyPredicatesAndPriorities(s *Snapshot)
ApplyPredicatesAndPriorities sets state of predicates and priorities to `s`.
func InsertPredicateKeyToAlgoProvider ¶
InsertPredicateKeyToAlgoProvider insert a fit predicate key to algorithmProvider.
func InsertPredicateKeyToAlgorithmProviderMap ¶
func InsertPredicateKeyToAlgorithmProviderMap(key string)
InsertPredicateKeyToAlgorithmProviderMap insert a fit predicate key to all algorithmProviders which in algorithmProviderMap.
func InsertPriorityKeyToAlgorithmProviderMap ¶
func InsertPriorityKeyToAlgorithmProviderMap(key string)
InsertPriorityKeyToAlgorithmProviderMap inserts a priority function to all algorithmProviders which are in algorithmProviderMap.
func IsFitPredicateRegistered ¶
IsFitPredicateRegistered is useful for testing providers.
func IsPriorityFunctionRegistered ¶
IsPriorityFunctionRegistered is useful for testing providers.
func ListAlgorithmProviders ¶
func ListAlgorithmProviders() string
ListAlgorithmProviders is called when listing all available algorithm providers in `kube-scheduler --help`
func ListRegisteredFitPredicates ¶
func ListRegisteredFitPredicates() []string
ListRegisteredFitPredicates returns the registered fit predicates.
func ListRegisteredPriorityFunctions ¶
func ListRegisteredPriorityFunctions() []string
ListRegisteredPriorityFunctions returns the registered priority functions.
func MakeDefaultErrorFunc ¶
func MakeDefaultErrorFunc(client clientset.Interface, podQueue internalqueue.SchedulingQueue, schedulerCache internalcache.Cache) func(*framework.PodInfo, error)
MakeDefaultErrorFunc construct a function to handle pod scheduler error
func NewPodInformer ¶
func NewPodInformer(client clientset.Interface, resyncPeriod time.Duration) coreinformers.PodInformer
NewPodInformer creates a shared index informer that returns only non-terminal pods.
func RegisterAlgorithmProvider ¶
RegisterAlgorithmProvider registers a new algorithm provider with the algorithm registry. This should be called from the init function in a provider plugin.
func RegisterCustomFitPredicate ¶
func RegisterCustomFitPredicate(policy schedulerapi.PredicatePolicy) string
RegisterCustomFitPredicate registers a custom fit predicate with the algorithm registry. Returns the name, with which the predicate was registered.
func RegisterCustomPriorityFunction ¶
func RegisterCustomPriorityFunction(policy schedulerapi.PriorityPolicy) string
RegisterCustomPriorityFunction registers a custom priority function with the algorithm registry. Returns the name, with which the priority function was registered.
func RegisterFitPredicate ¶
func RegisterFitPredicate(name string, predicate predicates.FitPredicate) string
RegisterFitPredicate registers a fit predicate with the algorithm registry. Returns the name with which the predicate was registered.
func RegisterFitPredicateFactory ¶
func RegisterFitPredicateFactory(name string, predicateFactory FitPredicateFactory) string
RegisterFitPredicateFactory registers a fit predicate factory with the algorithm registry. Returns the name with which the predicate was registered.
func RegisterMandatoryFitPredicate ¶
func RegisterMandatoryFitPredicate(name string, predicate predicates.FitPredicate) string
RegisterMandatoryFitPredicate registers a fit predicate with the algorithm registry, the predicate is used by kubelet, DaemonSet; it is always included in configuration. Returns the name with which the predicate was registered.
func RegisterPredicateMetadataProducer ¶
func RegisterPredicateMetadataProducer(producer predicates.PredicateMetadataProducer)
RegisterPredicateMetadataProducer registers a PredicateMetadataProducer.
func RegisterPriorityConfigFactory ¶
func RegisterPriorityConfigFactory(name string, pcf PriorityConfigFactory) string
RegisterPriorityConfigFactory registers a priority config factory with its name.
func RegisterPriorityFunction ¶
func RegisterPriorityFunction(name string, function priorities.PriorityFunction, weight int) string
RegisterPriorityFunction registers a priority function with the algorithm registry. Returns the name, with which the function was registered. DEPRECATED Use Map-Reduce pattern for priority functions.
func RegisterPriorityMapReduceFunction ¶
func RegisterPriorityMapReduceFunction( name string, mapFunction priorities.PriorityMapFunction, reduceFunction priorities.PriorityReduceFunction, weight int) string
RegisterPriorityMapReduceFunction registers a priority function with the algorithm registry. Returns the name, with which the function was registered.
func RegisterPriorityMetadataProducerFactory ¶
func RegisterPriorityMetadataProducerFactory(factory PriorityMetadataProducerFactory)
RegisterPriorityMetadataProducerFactory registers a PriorityMetadataProducerFactory.
func RemoveFitPredicate ¶
func RemoveFitPredicate(name string)
RemoveFitPredicate removes a fit predicate from factory.
func RemovePredicateKeyFromAlgoProvider ¶
RemovePredicateKeyFromAlgoProvider removes a fit predicate key from algorithmProvider.
func RemovePredicateKeyFromAlgorithmProviderMap ¶
func RemovePredicateKeyFromAlgorithmProviderMap(key string)
RemovePredicateKeyFromAlgorithmProviderMap removes a fit predicate key from all algorithmProviders which in algorithmProviderMap.
Types ¶
type AlgorithmProviderConfig ¶
type AlgorithmProviderConfig struct {
FitPredicateKeys sets.String
PriorityFunctionKeys sets.String
}
AlgorithmProviderConfig is used to store the configuration of algorithm providers.
func GetAlgorithmProvider ¶
func GetAlgorithmProvider(name string) (*AlgorithmProviderConfig, error)
GetAlgorithmProvider should not be used to modify providers. It is publicly visible for testing.
type Config ¶
type Config struct {
SchedulerCache internalcache.Cache
Algorithm core.ScheduleAlgorithm
GetBinder func(pod *v1.Pod) Binder
// Framework runs scheduler plugins at configured extension points.
Framework framework.Framework
// NextPod should be a function that blocks until the next pod
// is available. We don't use a channel for this, because scheduling
// a pod may take some amount of time and we don't want pods to get
// stale while they sit in a channel.
NextPod func() *framework.PodInfo
// WaitForCacheSync waits for scheduler cache to populate.
// It returns true if it was successful, false if the controller should shutdown.
WaitForCacheSync func() bool
// Error is called if there is an error. It is passed the pod in
// question, and the error
Error func(*framework.PodInfo, error)
// Recorder is the EventRecorder to use
Recorder events.EventRecorder
// Close this to shut down the scheduler.
StopEverything <-chan struct{}
// VolumeBinder handles PVC/PV binding for the pod.
VolumeBinder *volumebinder.VolumeBinder
// Disable pod preemption or not.
DisablePreemption bool
// SchedulingQueue holds pods to be scheduled
SchedulingQueue internalqueue.SchedulingQueue
// The final configuration of the framework.
Plugins config.Plugins
PluginConfig []config.PluginConfig
}
Config is an implementation of the Scheduler's configured input data. TODO over time we should make this struct a hidden implementation detail of the scheduler.
type ConfigFactoryArgs ¶
type ConfigFactoryArgs struct {
Client clientset.Interface
InformerFactory informers.SharedInformerFactory
NodeInformer coreinformers.NodeInformer
PodInformer coreinformers.PodInformer
PvInformer coreinformers.PersistentVolumeInformer
PvcInformer coreinformers.PersistentVolumeClaimInformer
ReplicationControllerInformer coreinformers.ReplicationControllerInformer
ReplicaSetInformer appsinformers.ReplicaSetInformer
StatefulSetInformer appsinformers.StatefulSetInformer
ServiceInformer coreinformers.ServiceInformer
PdbInformer policyinformers.PodDisruptionBudgetInformer
StorageClassInformer storageinformersv1.StorageClassInformer
CSINodeInformer storageinformersv1beta1.CSINodeInformer
VolumeBinder *volumebinder.VolumeBinder
SchedulerCache internalcache.Cache
HardPodAffinitySymmetricWeight int32
DisablePreemption bool
PercentageOfNodesToScore int32
BindTimeoutSeconds int64
PodInitialBackoffSeconds int64
PodMaxBackoffSeconds int64
StopCh <-chan struct{}
Registry framework.Registry
Plugins *config.Plugins
PluginConfig []config.PluginConfig
PluginConfigProducerRegistry *plugins.ConfigProducerRegistry
}
ConfigFactoryArgs is a set arguments passed to NewConfigFactory.
type Configurator ¶
type Configurator struct {
// Close this to stop all reflectors
StopEverything <-chan struct{}
// contains filtered or unexported fields
}
Configurator defines I/O, caching, and other functionality needed to construct a new scheduler.
func NewConfigFactory ¶
func NewConfigFactory(args *ConfigFactoryArgs) *Configurator
NewConfigFactory initializes the default implementation of a Configurator. To encourage eventual privatization of the struct type, we only return the interface.
func (*Configurator) Create ¶
func (c *Configurator) Create() (*Config, error)
Create creates a scheduler with the default algorithm provider.
func (*Configurator) CreateFromConfig ¶
func (c *Configurator) CreateFromConfig(policy schedulerapi.Policy) (*Config, error)
CreateFromConfig creates a scheduler from the configuration file
func (*Configurator) CreateFromKeys ¶
func (c *Configurator) CreateFromKeys(predicateKeys, priorityKeys sets.String, extenders []algorithm.SchedulerExtender) (*Config, error)
CreateFromKeys creates a scheduler from a set of registered fit predicate keys and priority keys.
func (*Configurator) CreateFromProvider ¶
func (c *Configurator) CreateFromProvider(providerName string) (*Config, error)
CreateFromProvider creates a scheduler from the name of a registered algorithm provider.
func (*Configurator) GetHardPodAffinitySymmetricWeight ¶
func (c *Configurator) GetHardPodAffinitySymmetricWeight() int32
GetHardPodAffinitySymmetricWeight is exposed for testing.
func (*Configurator) GetPredicateMetadataProducer ¶
func (c *Configurator) GetPredicateMetadataProducer() (predicates.PredicateMetadataProducer, error)
GetPredicateMetadataProducer returns a function to build Predicate Metadata. It is used by the scheduler and other components, such as k8s.io/autoscaler/cluster-autoscaler.
type FitPredicateFactory ¶
type FitPredicateFactory func(PluginFactoryArgs) predicates.FitPredicate
FitPredicateFactory produces a FitPredicate from the given args.
type Option ¶
type Option func(*schedulerOptions)
Option configures a Scheduler
func WithBindTimeoutSeconds ¶
WithBindTimeoutSeconds sets bindTimeoutSeconds for Scheduler, the default value is 100
func WithFrameworkConfigProducerRegistry ¶
func WithFrameworkConfigProducerRegistry(registry *frameworkplugins.ConfigProducerRegistry) Option
WithFrameworkConfigProducerRegistry sets the framework plugin producer registry.
func WithFrameworkDefaultRegistry ¶
WithFrameworkDefaultRegistry sets the framework's default registry.
func WithFrameworkOutOfTreeRegistry ¶
WithFrameworkOutOfTreeRegistry sets the registry for out-of-tree plugins. Those plugins will be appended to the default registry.
func WithFrameworkPluginConfig ¶
func WithFrameworkPluginConfig(pluginConfig []kubeschedulerconfig.PluginConfig) Option
WithFrameworkPluginConfig sets the PluginConfig slice that the framework should be configured with.
func WithFrameworkPlugins ¶
func WithFrameworkPlugins(plugins *kubeschedulerconfig.Plugins) Option
WithFrameworkPlugins sets the plugins that the framework should be configured with.
func WithHardPodAffinitySymmetricWeight ¶
WithHardPodAffinitySymmetricWeight sets hardPodAffinitySymmetricWeight for Scheduler, the default value is 1
func WithName ¶
WithName sets schedulerName for Scheduler, the default schedulerName is default-scheduler
func WithPercentageOfNodesToScore ¶
WithPercentageOfNodesToScore sets percentageOfNodesToScore for Scheduler, the default value is 50
func WithPodInitialBackoffSeconds ¶
WithPodInitialBackoffSeconds sets podInitialBackoffSeconds for Scheduler, the default value is 1
func WithPodMaxBackoffSeconds ¶
WithPodMaxBackoffSeconds sets podMaxBackoffSeconds for Scheduler, the default value is 10
func WithPreemptionDisabled ¶
WithPreemptionDisabled sets disablePreemption for Scheduler, the default value is false
type PluginFactoryArgs ¶
type PluginFactoryArgs struct {
PodLister algorithm.PodLister
ServiceLister corelisters.ServiceLister
ControllerLister corelisters.ReplicationControllerLister
ReplicaSetLister appslisters.ReplicaSetLister
StatefulSetLister appslisters.StatefulSetLister
PDBLister policylisters.PodDisruptionBudgetLister
NodeInfo predicates.NodeInfo
CSINodeInfo predicates.CSINodeInfo
PVInfo predicates.PersistentVolumeInfo
PVCInfo predicates.PersistentVolumeClaimInfo
StorageClassInfo predicates.StorageClassInfo
VolumeBinder *volumebinder.VolumeBinder
HardPodAffinitySymmetricWeight int32
}
PluginFactoryArgs are passed to all plugin factory functions.
type PredicateMetadataProducerFactory ¶
type PredicateMetadataProducerFactory func(PluginFactoryArgs) predicates.PredicateMetadataProducer
PredicateMetadataProducerFactory produces PredicateMetadataProducer from the given args.
type PriorityConfigFactory ¶
type PriorityConfigFactory struct {
Function PriorityFunctionFactory
MapReduceFunction PriorityFunctionFactory2
Weight int64
}
PriorityConfigFactory produces a PriorityConfig from the given function and weight
type PriorityFunctionFactory ¶
type PriorityFunctionFactory func(PluginFactoryArgs) priorities.PriorityFunction
PriorityFunctionFactory produces a PriorityConfig from the given args. DEPRECATED Use Map-Reduce pattern for priority functions.
type PriorityFunctionFactory2 ¶
type PriorityFunctionFactory2 func(PluginFactoryArgs) (priorities.PriorityMapFunction, priorities.PriorityReduceFunction)
PriorityFunctionFactory2 produces map & reduce priority functions from a given args. FIXME: Rename to PriorityFunctionFactory.
type PriorityMetadataProducerFactory ¶
type PriorityMetadataProducerFactory func(PluginFactoryArgs) priorities.PriorityMetadataProducer
PriorityMetadataProducerFactory produces PriorityMetadataProducer from the given args.
type Scheduler ¶
type Scheduler struct {
// It is expected that changes made via SchedulerCache will be observed
// by NodeLister and Algorithm.
SchedulerCache internalcache.Cache
Algorithm core.ScheduleAlgorithm
GetBinder func(pod *v1.Pod) Binder
// Framework runs scheduler plugins at configured extension points.
Framework framework.Framework
// NextPod should be a function that blocks until the next pod
// is available. We don't use a channel for this, because scheduling
// a pod may take some amount of time and we don't want pods to get
// stale while they sit in a channel.
NextPod func() *framework.PodInfo
// WaitForCacheSync waits for scheduler cache to populate.
// It returns true if it was successful, false if the controller should shutdown.
WaitForCacheSync func() bool
// Error is called if there is an error. It is passed the pod in
// question, and the error
Error func(*framework.PodInfo, error)
// Recorder is the EventRecorder to use
Recorder events.EventRecorder
// Close this to shut down the scheduler.
StopEverything <-chan struct{}
// VolumeBinder handles PVC/PV binding for the pod.
VolumeBinder *volumebinder.VolumeBinder
// Disable pod preemption or not.
DisablePreemption bool
// SchedulingQueue holds pods to be scheduled
SchedulingQueue internalqueue.SchedulingQueue
// contains filtered or unexported fields
}
Scheduler watches for new unscheduled pods. It attempts to find nodes that they fit on and writes bindings back to the api server.
func New ¶
func New(client clientset.Interface, informerFactory informers.SharedInformerFactory, podInformer coreinformers.PodInformer, recorder events.EventRecorder, schedulerAlgorithmSource kubeschedulerconfig.SchedulerAlgorithmSource, stopCh <-chan struct{}, opts ...Option) (*Scheduler, error)
New returns a Scheduler
func NewFromConfig ¶
NewFromConfig returns a new scheduler using the provided Config.
func (*Scheduler) Cache ¶
func (sched *Scheduler) Cache() internalcache.Cache
Cache returns the cache in scheduler for test to check the data in scheduler.
type Snapshot ¶
type Snapshot struct {
// contains filtered or unexported fields
}
Snapshot is used to store current state of registered predicates and priorities.
func RegisteredPredicatesAndPrioritiesSnapshot ¶
func RegisteredPredicatesAndPrioritiesSnapshot() *Snapshot
RegisteredPredicatesAndPrioritiesSnapshot returns a snapshot of current registered predicates and priorities.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package algorithm contains a generic Scheduler interface and several implementations.
|
Package algorithm contains a generic Scheduler interface and several implementations. |
|
Package api contains scheduler API objects.
|
Package api contains scheduler API objects. |
|
v1
Package v1 contains scheduler API objects.
|
Package v1 contains scheduler API objects. |
|
apis
|
|
|
extender/v1
Package v1 contains scheduler API objects.
|
Package v1 contains scheduler API objects. |
|
framework
|
|
|
internal
|
|