Documentation
¶
Index ¶
Constants ¶
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 ¶
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 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