Documentation ¶
Overview ¶
Package factory can set up a scheduler. This code is here instead of cmd/scheduler for both testability and reuse.
Index ¶
- Constants
- func Apply(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(pod *v1.Pod, err 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 RegisterPredicateMetadataProducerFactory(factory PredicateMetadataProducerFactory)
- 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)
- func (c *Configurator) GetPredicates(predicateKeys sets.String) (map[string]predicates.FitPredicate, error)
- type FitPredicateFactory
- type PluginFactoryArgs
- type PodConditionUpdater
- type PodPreemptor
- type PredicateMetadataProducerFactory
- type PriorityConfigFactory
- type PriorityFunctionFactory
- type PriorityFunctionFactory2
- type PriorityMetadataProducerFactory
- type Snapshot
Constants ¶
const (
// DefaultProvider defines the default algorithm provider name.
DefaultProvider = "DefaultProvider"
)
Variables ¶
This section is empty.
Functions ¶
func Apply ¶ added in v1.16.0
func Apply(s *Snapshot)
Apply 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 ¶ added in v1.13.0
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 ¶ added in v1.14.0
func MakeDefaultErrorFunc(client clientset.Interface, podQueue internalqueue.SchedulingQueue, schedulerCache internalcache.Cache, stopEverything <-chan struct{}) func(pod *v1.Pod, err 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 RegisterPredicateMetadataProducerFactory ¶
func RegisterPredicateMetadataProducerFactory(factory PredicateMetadataProducerFactory)
RegisterPredicateMetadataProducerFactory registers a PredicateMetadataProducerFactory.
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 ¶ added in v1.16.0
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 ¶ added in v1.13.0
type Config struct { SchedulerCache internalcache.Cache Algorithm core.ScheduleAlgorithm GetBinder func(pod *v1.Pod) Binder // PodConditionUpdater is used only in case of scheduling errors. If we succeed // with scheduling, PodScheduled condition will be updated in apiserver in /bind // handler so that binding and setting PodCondition it is atomic. PodConditionUpdater PodConditionUpdater // PodPreemptor is used to evict pods and update 'NominatedNode' field of // the preemptor pod. PodPreemptor PodPreemptor // 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() *v1.Pod // 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(*v1.Pod, 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 }
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 ¶ added in v1.12.0
type ConfigFactoryArgs struct { Client clientset.Interface 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 HardPodAffinitySymmetricWeight int32 DisablePreemption bool PercentageOfNodesToScore int32 BindTimeoutSeconds int64 StopCh <-chan struct{} Registry framework.Registry Plugins *config.Plugins PluginConfig []config.PluginConfig }
ConfigFactoryArgs is a set arguments passed to NewConfigFactory.
type Configurator ¶ added in v1.13.0
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 ¶ added in v1.13.0
func (c *Configurator) Create() (*Config, error)
Create creates a scheduler with the default algorithm provider.
func (*Configurator) CreateFromConfig ¶ added in v1.13.0
func (c *Configurator) CreateFromConfig(policy schedulerapi.Policy) (*Config, error)
CreateFromConfig creates a scheduler from the configuration file
func (*Configurator) CreateFromKeys ¶ added in v1.13.0
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 ¶ added in v1.13.0
func (c *Configurator) CreateFromProvider(providerName string) (*Config, error)
CreateFromProvider creates a scheduler from the name of a registered algorithm provider.
func (*Configurator) GetHardPodAffinitySymmetricWeight ¶ added in v1.13.0
func (c *Configurator) GetHardPodAffinitySymmetricWeight() int32
GetHardPodAffinitySymmetricWeight is exposed for testing.
func (*Configurator) GetPredicateMetadataProducer ¶ added in v1.13.0
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.
func (*Configurator) GetPredicates ¶ added in v1.13.0
func (c *Configurator) GetPredicates(predicateKeys sets.String) (map[string]predicates.FitPredicate, error)
GetPredicates returns the predicate functions. 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 PluginFactoryArgs ¶
type PluginFactoryArgs struct { PodLister algorithm.PodLister ServiceLister algorithm.ServiceLister ControllerLister algorithm.ControllerLister ReplicaSetLister algorithm.ReplicaSetLister StatefulSetLister algorithm.StatefulSetLister NodeLister algorithm.NodeLister PDBLister algorithm.PDBLister 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 PodConditionUpdater ¶ added in v1.13.0
type PodConditionUpdater interface {
Update(pod *v1.Pod, podCondition *v1.PodCondition) error
}
PodConditionUpdater updates the condition of a pod based on the passed PodCondition
type PodPreemptor ¶ added in v1.13.0
type PodPreemptor interface { GetUpdatedPod(pod *v1.Pod) (*v1.Pod, error) DeletePod(pod *v1.Pod) error SetNominatedNodeName(pod *v1.Pod, nominatedNode string) error RemoveNominatedNodeName(pod *v1.Pod) error }
PodPreemptor has methods needed to delete a pod and to update 'NominatedPod' field of the preemptor pod.
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 int }
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.