scheduler

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Feb 4, 2026 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// InProgressRankerWeight is the weight of the InProgressRanker
	InProgressRankerWeight = 1000
	// LeastPendingRankerMaxWeight is the weight of the LeastPendingRanker
	LeastPendingRankerMaxWeight = 100
)

Variables

This section is empty.

Functions

func CompareRanked added in v0.2.0

func CompareRanked(a *RankedNodeMaintenance, b *RankedNodeMaintenance) int

CompareRanked compares between two RankedNodeMaintenance objects

func NewDefaultScheduler

func NewDefaultScheduler(log logr.Logger) *defaultScheduler

NewDefaultScheduler creates a new default scheduler

Types

type ClusterState

type ClusterState struct {
	// Nodes is a map between node name and k8s Node obj
	Nodes map[string]*corev1.Node
	// MaintenanceInProgress hold all NodeMaintenance objects that are currently in progress
	MaintenanceInProgress []*maintenancev1.NodeMaintenance
	// MaintenancePending holds all NodeMaintenance that are pending to be scheduled
	MaintenancePending []*maintenancev1.NodeMaintenance
}

ClusterState represent the state of the cluster for Scheduler

func NewClusterState

func NewClusterState(nodes []*corev1.Node, nodeMaintenances []*maintenancev1.NodeMaintenance) *ClusterState

NewClusterState returns a new ClusterState

type RankedNodeMaintenance added in v0.2.0

type RankedNodeMaintenance struct {
	maintenancev1.NodeMaintenance
	Rank int
}

RankedNodeMaintenance is a wrapper for NodeMaintenance object with a rank

func CompactIdenticalNodes added in v0.2.0

func CompactIdenticalNodes(rankedMaintenances []*RankedNodeMaintenance) []*RankedNodeMaintenance

CompactIdenticalNodes compacts the list of RankedNodeMaintenance objects by keeping only the first NodeMaintenance object for each node name

func RankSlice added in v0.2.0

func RankSlice(maintenances []*maintenancev1.NodeMaintenance, rankers ...Ranker) []*RankedNodeMaintenance

RankSlice ranks the given maintenances objects using the given Rankers and returns a slice of RankedNodeMaintenance objects if no rankers were given, it converts maintenances to RankedNodeMaintenance objects

type Ranker added in v0.2.0

type Ranker interface {
	// Rank	ranks the given RankedNodeMaintenance object
	Rank(rnm *RankedNodeMaintenance)
}

Ranker is an interface for ranking NodeMaintenance objects

func NewInProgressRanker added in v0.2.0

func NewInProgressRanker(cs *ClusterState) Ranker

NewInProgressRanker creates a new InProgressRanker

func NewLeastPendingRanker added in v0.2.0

func NewLeastPendingRanker(cs *ClusterState) Ranker

NewLeastPendingRanker creates a new LeastPendingRanker

type RankerBuilder added in v0.2.0

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

RankerBuilder is a builder for Ranker objects

func NewRankerBuilder added in v0.2.0

func NewRankerBuilder(cs *ClusterState) *RankerBuilder

NewRankerBuilder creates a new RankerBuilder

func (*RankerBuilder) Build added in v0.2.0

func (rb *RankerBuilder) Build() []Ranker

Build builds the Ranker objects

func (*RankerBuilder) WithInProgressRanker added in v0.2.0

func (rb *RankerBuilder) WithInProgressRanker() *RankerBuilder

WithInProgressRanker adds the InProgressRanker to the RankerBuilder

func (*RankerBuilder) WithLeastPendingRanker added in v0.2.0

func (rb *RankerBuilder) WithLeastPendingRanker() *RankerBuilder

WithLeastPendingRanker adds the LeastPendingRanker to the RankerBuilder

type Scheduler

type Scheduler interface {
	// Schedule returns the next set of NodeMaintenance objects to be scheduled.
	Schedule(clusterState *ClusterState, schedulerCtx *SchedulerContext) []*maintenancev1.NodeMaintenance
}

Scheduler defines an interface for scheduling NodeMaintenance requests

type SchedulerContext

type SchedulerContext struct {
	// AvailableSlots is the number of Maintenance slots available
	AvailableSlots int
	// CanBecomeUnavailable is the number of nodes that can become unavailable during scheduling
	CanBecomeUnavailable int
	// CandidateNodes is the Set of nodes that must be considered for maintenance
	CandidateNodes sets.Set[string]
	// CandidateMaintenance is a list of NodeMaintenance that must be considered for scheduling
	CandidateMaintenance []*maintenancev1.NodeMaintenance
}

SchedulerContext contains pre-scheduling information

Jump to

Keyboard shortcuts

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