Help us shape the future of Go! Take the 2026 Go Developer Survey

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: 150

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