kubernetes: k8s.io/kubernetes/pkg/scheduler/algorithm Index | Files | Directories

package algorithm

import "k8s.io/kubernetes/pkg/scheduler/algorithm"

Package algorithm contains a generic Scheduler interface and several implementations.


Package Files

doc.go scheduler_interface.go types.go


var NodeFieldSelectorKeys = map[string]func(*v1.Node) string{
    schedulerapi.NodeFieldSelectorKeyNodeName: func(n *v1.Node) string { return n.Name },

NodeFieldSelectorKeys is a map that: the keys are node field selector keys; the values are the functions to get the value of the node field.

type ControllerLister Uses

type ControllerLister interface {
    // Lists all the replication controllers
    List(labels.Selector) ([]*v1.ReplicationController, error)
    // Gets the replication controller for the given pod
    GetPodControllers(*v1.Pod) ([]*v1.ReplicationController, error)

ControllerLister interface represents anything that can produce a list of ReplicationController; the list is consumed by a scheduler.

type EmptyControllerLister Uses

type EmptyControllerLister struct{}

EmptyControllerLister implements ControllerLister on []v1.ReplicationController returning empty data

func (EmptyControllerLister) GetPodControllers Uses

func (f EmptyControllerLister) GetPodControllers(pod *v1.Pod) (controllers []*v1.ReplicationController, err error)

GetPodControllers returns nil

func (EmptyControllerLister) List Uses

func (f EmptyControllerLister) List(labels.Selector) ([]*v1.ReplicationController, error)

List returns nil

type EmptyReplicaSetLister Uses

type EmptyReplicaSetLister struct{}

EmptyReplicaSetLister implements ReplicaSetLister on []extensions.ReplicaSet returning empty data

func (EmptyReplicaSetLister) GetPodReplicaSets Uses

func (f EmptyReplicaSetLister) GetPodReplicaSets(pod *v1.Pod) (rss []*apps.ReplicaSet, err error)

GetPodReplicaSets returns nil

type EmptyStatefulSetLister Uses

type EmptyStatefulSetLister struct{}

EmptyStatefulSetLister implements StatefulSetLister on []apps.StatefulSet returning empty data.

func (EmptyStatefulSetLister) GetPodStatefulSets Uses

func (f EmptyStatefulSetLister) GetPodStatefulSets(pod *v1.Pod) (sss []*apps.StatefulSet, err error)

GetPodStatefulSets of EmptyStatefulSetLister returns nil.

type NodeLister Uses

type NodeLister interface {
    // We explicitly return []*v1.Node, instead of v1.NodeList, to avoid
    // performing expensive copies that are unneeded.
    ListNodes() []*v1.Node

NodeLister interface represents anything that can list nodes for a scheduler.

type PDBLister Uses

type PDBLister interface {
    // List all the PodDisruptionBudgets matching the selector
    List(labels.Selector) ([]*policyv1beta1.PodDisruptionBudget, error)

PDBLister interface represents anything that can list PodDisruptionBudget objects.

type PodFilter Uses

type PodFilter func(*v1.Pod) bool

PodFilter is a function to filter a pod. If pod passed return true else return false.

type PodLister Uses

type PodLister interface {
    // We explicitly return []*v1.Pod, instead of v1.PodList, to avoid
    // performing expensive copies that are unneeded.
    List(labels.Selector) ([]*v1.Pod, error)
    // This is similar to "List()", but the returned slice does not
    // contain pods that don't pass `podFilter`.
    FilteredList(podFilter PodFilter, selector labels.Selector) ([]*v1.Pod, error)

PodLister interface represents anything that can list pods for a scheduler.

type ReplicaSetLister Uses

type ReplicaSetLister interface {
    // Gets the replicasets for the given pod
    GetPodReplicaSets(*v1.Pod) ([]*apps.ReplicaSet, error)

ReplicaSetLister interface represents anything that can produce a list of ReplicaSet; the list is consumed by a scheduler.

type SchedulerExtender Uses

type SchedulerExtender interface {
    // Name returns a unique name that identifies the extender.
    Name() string

    // 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.
    Filter(pod *v1.Pod,
        nodes []*v1.Node, nodeNameToInfo map[string]*schedulernodeinfo.NodeInfo,
    ) (filteredNodes []*v1.Node, failedNodesMap extenderv1.FailedNodesMap, err error)

    // Prioritize based on extender-implemented priority functions. The returned scores & weight
    // are used to compute the weighted score for an extender. The weighted scores are added to
    // the scores computed by Kubernetes scheduler. The total scores are used to do the host selection.
    Prioritize(pod *v1.Pod, nodes []*v1.Node) (hostPriorities *extenderv1.HostPriorityList, weight int64, err error)

    // Bind delegates the action of binding a pod to a node to the extender.
    Bind(binding *v1.Binding) error

    // IsBinder returns whether this extender is configured for the Bind method.
    IsBinder() bool

    // IsInterested returns true if at least one extended resource requested by
    // this pod is managed by this extender.
    IsInterested(pod *v1.Pod) bool

    // ProcessPreemption returns nodes with their victim pods processed by extender based on
    // given:
    //   1. Pod to schedule
    //   2. Candidate nodes and victim pods (nodeToVictims) generated by previous scheduling process.
    //   3. nodeNameToInfo to restore v1.Node from node name if extender cache is enabled.
    // The possible changes made by extender may include:
    //   1. Subset of given candidate nodes after preemption phase of extender.
    //   2. A different set of victim pod for every given candidate node after preemption phase of extender.
        pod *v1.Pod,
        nodeToVictims map[*v1.Node]*extenderv1.Victims,
        nodeNameToInfo map[string]*schedulernodeinfo.NodeInfo,
    ) (map[*v1.Node]*extenderv1.Victims, error)

    // SupportsPreemption returns if the scheduler extender support preemption or not.
    SupportsPreemption() bool

    // IsIgnorable returns true indicates scheduling should not fail when this extender
    // is unavailable. This gives scheduler ability to fail fast and tolerate non-critical extenders as well.
    IsIgnorable() bool

SchedulerExtender is an interface for external processes to influence scheduling decisions made by Kubernetes. This is typically needed for resources not directly managed by Kubernetes.

type ServiceLister Uses

type ServiceLister interface {
    // Lists all the services
    List(labels.Selector) ([]*v1.Service, error)
    // Gets the services for the given pod
    GetPodServices(*v1.Pod) ([]*v1.Service, error)

ServiceLister interface represents anything that can produce a list of services; the list is consumed by a scheduler.

type StatefulSetLister Uses

type StatefulSetLister interface {
    // Gets the StatefulSet for the given pod.
    GetPodStatefulSets(*v1.Pod) ([]*apps.StatefulSet, error)

StatefulSetLister interface represents anything that can produce a list of StatefulSet; the list is consumed by a scheduler.



Package algorithm imports 7 packages (graph) and is imported by 180 packages. Updated 2019-10-12. Refresh now. Tools for package owners.