strategy

package
v1.2.9 Latest Latest
Warning

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

Go to latest
Published: Jun 1, 2018 License: Apache-2.0, CC-BY-SA-4.0 Imports: 7 Imported by: 0

README

Strategies README

The Docker Swarm scheduler comes with multiple strategies. To read the end-user strategy documentation, visit the Swarm strategy documentation on docs.docker.com.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (

	// ErrNotSupported is the error returned when a strategy name does not match
	// any supported placement strategy.
	ErrNotSupported = errors.New("strategy not supported")
	// ErrNoResourcesAvailable is the error returned when there are no resources
	// available to schedule a container. This can occur if there are no nodes in
	// the cluster or if no node contains sufficient resources for the container.
	ErrNoResourcesAvailable = errors.New("no resources available to schedule container")
)

Functions

func List added in v0.2.0

func List() []string

List returns the names of all the available strategies.

Types

type BinpackPlacementStrategy added in v0.2.0

type BinpackPlacementStrategy struct {
}

BinpackPlacementStrategy places a container onto the most packed node in the cluster.

func (*BinpackPlacementStrategy) Initialize added in v0.2.0

func (p *BinpackPlacementStrategy) Initialize() error

Initialize a BinpackPlacementStrategy.

func (*BinpackPlacementStrategy) Name added in v0.2.0

func (p *BinpackPlacementStrategy) Name() string

Name returns the name of the strategy.

func (*BinpackPlacementStrategy) RankAndSort added in v1.0.0

func (p *BinpackPlacementStrategy) RankAndSort(config *cluster.ContainerConfig, nodes []*node.Node) ([]*node.Node, error)

RankAndSort sorts nodes based on the binpack strategy applied to the container config.

type PlacementStrategy

type PlacementStrategy interface {
	// Name of the strategy
	Name() string
	// Initialize performs any initial configuration required by the strategy and returns
	// an error if one is encountered.
	// If no initial configuration is needed, this may be a no-op and return a nil error.
	Initialize() error
	// RankAndSort applies the strategy to a list of nodes and ranks them based
	// on the best fit given the container configuration.  It returns a sorted
	// list of nodes (based on their ranks) or an error if there is no
	// available node on which to schedule the container.
	RankAndSort(config *cluster.ContainerConfig, nodes []*node.Node) ([]*node.Node, error)
}

PlacementStrategy is the interface for a container placement strategy.

func New

func New(name string) (PlacementStrategy, error)

New creates a new PlacementStrategy for the given strategy name.

type RandomPlacementStrategy

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

RandomPlacementStrategy randomly places the container into the cluster.

func (*RandomPlacementStrategy) Initialize

func (p *RandomPlacementStrategy) Initialize() error

Initialize a RandomPlacementStrategy.

func (*RandomPlacementStrategy) Name added in v0.2.0

func (p *RandomPlacementStrategy) Name() string

Name returns the name of the strategy.

func (*RandomPlacementStrategy) RankAndSort added in v1.0.0

func (p *RandomPlacementStrategy) RankAndSort(config *cluster.ContainerConfig, nodes []*node.Node) ([]*node.Node, error)

RankAndSort randomly sorts the list of nodes.

type SpreadPlacementStrategy added in v0.2.0

type SpreadPlacementStrategy struct {
}

SpreadPlacementStrategy places a container on the node with the fewest running containers.

func (*SpreadPlacementStrategy) Initialize added in v0.2.0

func (p *SpreadPlacementStrategy) Initialize() error

Initialize a SpreadPlacementStrategy.

func (*SpreadPlacementStrategy) Name added in v0.2.0

func (p *SpreadPlacementStrategy) Name() string

Name returns the name of the strategy.

func (*SpreadPlacementStrategy) RankAndSort added in v1.0.0

func (p *SpreadPlacementStrategy) RankAndSort(config *cluster.ContainerConfig, nodes []*node.Node) ([]*node.Node, error)

RankAndSort sorts nodes based on the spread strategy applied to the container config.

Jump to

Keyboard shortcuts

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