Documentation ¶
Index ¶
- Constants
- Variables
- func EqualPriorityMap(_ *v1.Pod, _ interface{}, nodeInfo *schedulernodeinfo.NodeInfo) (schedulerapi.HostPriority, error)
- func NewHTTPExtender(config *schedulerapi.ExtenderConfig) (algorithm.SchedulerExtender, error)
- func PrioritizeNodes(pod *v1.Pod, nodeNameToInfo map[string]*schedulernodeinfo.NodeInfo, ...) (schedulerapi.HostPriorityList, error)
- type FailedPredicateMap
- type FitError
- type HTTPExtender
- func (h *HTTPExtender) Bind(binding *v1.Binding) error
- func (h *HTTPExtender) Filter(pod *v1.Pod, nodes []*v1.Node, ...) ([]*v1.Node, schedulerapi.FailedNodesMap, error)
- func (h *HTTPExtender) IsBinder() bool
- func (h *HTTPExtender) IsIgnorable() bool
- func (h *HTTPExtender) IsInterested(pod *v1.Pod) bool
- func (h *HTTPExtender) Name() string
- func (h *HTTPExtender) Prioritize(pod *v1.Pod, nodes []*v1.Node) (*schedulerapi.HostPriorityList, int, error)
- func (h *HTTPExtender) ProcessPreemption(pod *v1.Pod, nodeToVictims map[*v1.Node]*schedulerapi.Victims, ...) (map[*v1.Node]*schedulerapi.Victims, error)
- func (h *HTTPExtender) SupportsPreemption() bool
- type ScheduleAlgorithm
- type ScheduleResult
Constants ¶
const ( // DefaultExtenderTimeout defines the default extender timeout in second. DefaultExtenderTimeout = 5 * time.Second )
const (
// NoNodeAvailableMsg is used to format message when no nodes available.
NoNodeAvailableMsg = "0/%v nodes are available"
)
Variables ¶
var ErrNoNodesAvailable = fmt.Errorf("no nodes available to schedule pods")
ErrNoNodesAvailable is used to describe the error that no nodes available to schedule pods.
Functions ¶
func EqualPriorityMap ¶
func EqualPriorityMap(_ *v1.Pod, _ interface{}, nodeInfo *schedulernodeinfo.NodeInfo) (schedulerapi.HostPriority, error)
EqualPriorityMap is a prioritizer function that gives an equal weight of one to all nodes
func NewHTTPExtender ¶
func NewHTTPExtender(config *schedulerapi.ExtenderConfig) (algorithm.SchedulerExtender, error)
NewHTTPExtender creates an HTTPExtender object.
func PrioritizeNodes ¶
func PrioritizeNodes( pod *v1.Pod, nodeNameToInfo map[string]*schedulernodeinfo.NodeInfo, meta interface{}, priorityConfigs []priorities.PriorityConfig, nodes []*v1.Node, extenders []algorithm.SchedulerExtender, ) (schedulerapi.HostPriorityList, error)
PrioritizeNodes prioritizes the nodes by running the individual priority functions in parallel. Each priority function is expected to set a score of 0-10 0 is the lowest priority score (least preferred node) and 10 is the highest Each priority function can also have its own weight The node scores returned by the priority function are multiplied by the weights to get weighted scores All scores are finally combined (added) to get the total weighted scores of all nodes
Types ¶
type FailedPredicateMap ¶
type FailedPredicateMap map[string][]predicates.PredicateFailureReason
FailedPredicateMap declares a map[string][]algorithm.PredicateFailureReason type.
type FitError ¶
type FitError struct { Pod *v1.Pod NumAllNodes int FailedPredicates FailedPredicateMap }
FitError describes a fit error of a pod.
type HTTPExtender ¶
type HTTPExtender struct {
// contains filtered or unexported fields
}
HTTPExtender implements the algorithm.SchedulerExtender interface.
func (*HTTPExtender) Bind ¶
func (h *HTTPExtender) Bind(binding *v1.Binding) error
Bind delegates the action of binding a pod to a node to the extender.
func (*HTTPExtender) Filter ¶
func (h *HTTPExtender) Filter( pod *v1.Pod, nodes []*v1.Node, nodeNameToInfo map[string]*schedulernodeinfo.NodeInfo, ) ([]*v1.Node, schedulerapi.FailedNodesMap, error)
Filter based on extender implemented predicate functions. The filtered list is expected to be a subset of the supplied list. failedNodesMap optionally contains the list of failed nodes and failure reasons.
func (*HTTPExtender) IsBinder ¶
func (h *HTTPExtender) IsBinder() bool
IsBinder returns whether this extender is configured for the Bind method.
func (*HTTPExtender) IsIgnorable ¶
func (h *HTTPExtender) IsIgnorable() bool
IsIgnorable returns true indicates scheduling should not fail when this extender is unavailable
func (*HTTPExtender) IsInterested ¶
func (h *HTTPExtender) IsInterested(pod *v1.Pod) bool
IsInterested returns true if at least one extended resource requested by this pod is managed by this extender.
func (*HTTPExtender) Name ¶
func (h *HTTPExtender) Name() string
Name returns extenderURL to identify the extender.
func (*HTTPExtender) Prioritize ¶
func (h *HTTPExtender) Prioritize(pod *v1.Pod, nodes []*v1.Node) (*schedulerapi.HostPriorityList, int, error)
Prioritize based on extender implemented priority functions. Weight*priority is added up for each such priority function. The returned score is added to the score computed by Kubernetes scheduler. The total score is used to do the host selection.
func (*HTTPExtender) ProcessPreemption ¶
func (h *HTTPExtender) ProcessPreemption( pod *v1.Pod, nodeToVictims map[*v1.Node]*schedulerapi.Victims, nodeNameToInfo map[string]*schedulernodeinfo.NodeInfo, ) (map[*v1.Node]*schedulerapi.Victims, error)
ProcessPreemption returns filtered candidate nodes and victims after running preemption logic in extender.
func (*HTTPExtender) SupportsPreemption ¶
func (h *HTTPExtender) SupportsPreemption() bool
SupportsPreemption returns true if an extender supports preemption. An extender should have preempt verb defined and enabled its own node cache.
type ScheduleAlgorithm ¶
type ScheduleAlgorithm interface { Schedule(*v1.Pod, algorithm.NodeLister) (scheduleResult ScheduleResult, err error) // Preempt receives scheduling errors for a pod and tries to create room for // the pod by preempting lower priority pods if possible. // It returns the node where preemption happened, a list of preempted pods, a // list of pods whose nominated node name should be removed, and error if any. Preempt(*v1.Pod, algorithm.NodeLister, error) (selectedNode *v1.Node, preemptedPods []*v1.Pod, cleanupNominatedPods []*v1.Pod, err error) // Predicates() returns a pointer to a map of predicate functions. This is // exposed for testing. Predicates() map[string]predicates.FitPredicate // Prioritizers returns a slice of priority config. This is exposed for // testing. Prioritizers() []priorities.PriorityConfig }
ScheduleAlgorithm is an interface implemented by things that know how to schedule pods onto machines. TODO: Rename this type.
func NewGenericScheduler ¶
func NewGenericScheduler( cache internalcache.Cache, podQueue internalqueue.SchedulingQueue, predicates map[string]predicates.FitPredicate, predicateMetaProducer predicates.PredicateMetadataProducer, prioritizers []priorities.PriorityConfig, priorityMetaProducer priorities.PriorityMetadataProducer, framework framework.Framework, extenders []algorithm.SchedulerExtender, volumeBinder *volumebinder.VolumeBinder, pvcLister corelisters.PersistentVolumeClaimLister, pdbLister algorithm.PDBLister, alwaysCheckAllPredicates bool, disablePreemption bool, percentageOfNodesToScore int32, enableNonPreempting bool, ) ScheduleAlgorithm
NewGenericScheduler creates a genericScheduler object.
type ScheduleResult ¶
type ScheduleResult struct { // Name of the scheduler suggest host SuggestedHost string // Number of nodes scheduler evaluated on one pod scheduled EvaluatedNodes int // Number of feasible nodes on one pod scheduled FeasibleNodes int }
ScheduleResult represents the result of one pod scheduled. It will contain the final selected Node, along with the selected intermediate information.