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
|
|