scheduler

package
v0.0.0-...-3c7cc97 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 12, 2024 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ConstraintFilter

type ConstraintFilter struct {
	// contains filtered or unexported fields
}

ConstraintFilter selects only nodes that match certain labels.

func (*ConstraintFilter) Check

func (f *ConstraintFilter) Check(n *NodeInfo) bool

Check returns true if the task's constraint is supported by the given node.

func (*ConstraintFilter) Explain

func (f *ConstraintFilter) Explain(nodes int) string

Explain returns an explanation of a failure.

func (*ConstraintFilter) SetTask

func (f *ConstraintFilter) SetTask(t *api.Task) bool

SetTask returns true when the filter is enable for a given task.

type Filter

type Filter interface {
	// SetTask returns true when the filter is enabled for a given task
	// and assigns the task to the filter. It returns false if the filter
	// isn't applicable to this task.  For instance, a constraints filter
	// would return `false` if the task doesn't contain any constraints.
	SetTask(*api.Task) bool

	// Check returns true if the task assigned by SetTask can be scheduled
	// into the given node. This function should not be called if SetTask
	// returned false.
	Check(*NodeInfo) bool

	// Explain what a failure of this filter means
	Explain(nodes int) string
}

Filter checks whether the given task can run on the given node. A filter may only operate

type HostPortFilter

type HostPortFilter struct {
	// contains filtered or unexported fields
}

HostPortFilter checks that the node has a specific port available.

func (*HostPortFilter) Check

func (f *HostPortFilter) Check(n *NodeInfo) bool

Check returns true if the task can be scheduled into the given node.

func (*HostPortFilter) Explain

func (f *HostPortFilter) Explain(nodes int) string

Explain returns an explanation of a failure.

func (*HostPortFilter) SetTask

func (f *HostPortFilter) SetTask(t *api.Task) bool

SetTask returns true when the filter is enabled for a given task.

type NodeInfo

type NodeInfo struct {
	*api.Node
	Tasks                     map[string]*api.Task
	ActiveTasksCount          int
	ActiveTasksCountByService map[string]int
	AvailableResources        *api.Resources
	// contains filtered or unexported fields
}

NodeInfo contains a node and some additional metadata.

type Pipeline

type Pipeline struct {
	// contains filtered or unexported fields
}

Pipeline runs a set of filters against nodes.

func NewPipeline

func NewPipeline() *Pipeline

NewPipeline returns a pipeline with the default set of filters.

func (*Pipeline) Explain

func (p *Pipeline) Explain() string

Explain returns a string explaining why a task could not be scheduled.

func (*Pipeline) Process

func (p *Pipeline) Process(n *NodeInfo) bool

Process a node through the filter pipeline. Returns true if all filters pass, false otherwise.

func (*Pipeline) SetTask

func (p *Pipeline) SetTask(t *api.Task)

SetTask sets up the filters to process a new task. Once this is called, Process can be called repeatedly to try to assign the task various nodes.

type PlatformFilter

type PlatformFilter struct {
	// contains filtered or unexported fields
}

PlatformFilter selects only nodes that run the required platform.

func (*PlatformFilter) Check

func (f *PlatformFilter) Check(n *NodeInfo) bool

Check returns true if the task can be scheduled into the given node.

func (*PlatformFilter) Explain

func (f *PlatformFilter) Explain(nodes int) string

Explain returns an explanation of a failure.

func (*PlatformFilter) SetTask

func (f *PlatformFilter) SetTask(t *api.Task) bool

SetTask returns true when the filter is enabled for a given task.

type PluginFilter

type PluginFilter struct {
	// contains filtered or unexported fields
}

PluginFilter checks that the node has a specific volume plugin installed

func (*PluginFilter) Check

func (f *PluginFilter) Check(n *NodeInfo) bool

Check returns true if the task can be scheduled into the given node. TODO(amitshukla): investigate storing Plugins as a map so it can be easily probed

func (*PluginFilter) Explain

func (f *PluginFilter) Explain(nodes int) string

Explain returns an explanation of a failure.

func (*PluginFilter) SetTask

func (f *PluginFilter) SetTask(t *api.Task) bool

SetTask returns true when the filter is enabled for a given task.

type ReadyFilter

type ReadyFilter struct {
}

ReadyFilter checks that the node is ready to schedule tasks.

func (*ReadyFilter) Check

func (f *ReadyFilter) Check(n *NodeInfo) bool

Check returns true if the task can be scheduled into the given node.

func (*ReadyFilter) Explain

func (f *ReadyFilter) Explain(nodes int) string

Explain returns an explanation of a failure.

func (*ReadyFilter) SetTask

func (f *ReadyFilter) SetTask(_ *api.Task) bool

SetTask returns true when the filter is enabled for a given task.

type ResourceFilter

type ResourceFilter struct {
	// contains filtered or unexported fields
}

ResourceFilter checks that the node has enough resources available to run the task.

func (*ResourceFilter) Check

func (f *ResourceFilter) Check(n *NodeInfo) bool

Check returns true if the task can be scheduled into the given node.

func (*ResourceFilter) Explain

func (f *ResourceFilter) Explain(nodes int) string

Explain returns an explanation of a failure.

func (*ResourceFilter) SetTask

func (f *ResourceFilter) SetTask(t *api.Task) bool

SetTask returns true when the filter is enabled for a given task.

type Scheduler

type Scheduler struct {
	// contains filtered or unexported fields
}

Scheduler assigns tasks to nodes.

func New

func New(store *store.MemoryStore) *Scheduler

New creates a new scheduler.

func (*Scheduler) Run

func (s *Scheduler) Run(ctx context.Context) error

Run is the scheduler event loop.

func (*Scheduler) Stop

func (s *Scheduler) Stop()

Stop causes the scheduler event loop to stop running.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL