internaltypes

package
v0.15.11 Latest Latest
Warning

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

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

Documentation

Index

Constants

View Source
const (
	// evictedPriority is the priority class priority resources consumed by evicted jobs are accounted for at.
	// This helps avoid scheduling new jobs onto nodes that make it impossible to re-schedule evicted jobs.
	EvictedPriority int32 = -1
	// MinPriority is the smallest possible priority class priority within the NodeDb.
	MinPriority int32 = EvictedPriority
)

Variables

This section is empty.

Functions

func QuantityToInt64RoundDown added in v0.4.48

func QuantityToInt64RoundDown(q resource.Quantity, scale resource.Scale) int64

func QuantityToInt64RoundUp added in v0.4.48

func QuantityToInt64RoundUp(q resource.Quantity, scale resource.Scale) int64

func RlMapAllZero added in v0.15.4

func RlMapAllZero(m map[string]ResourceList) bool

func RlMapFromJobSchedulerObjects added in v0.15.4

func RlMapFromJobSchedulerObjects(m schedulerobjects.QuantityByTAndResourceType[string], rlFactory *ResourceListFactory) map[string]ResourceList

func RlMapHasNegativeValues added in v0.15.4

func RlMapHasNegativeValues(m map[string]ResourceList) bool

func RlMapRemoveZeros added in v0.15.4

func RlMapRemoveZeros(m map[string]ResourceList) map[string]ResourceList

func RlMapToString added in v0.15.4

func RlMapToString(m map[string]ResourceList) string

func UnschedulableTaint added in v0.13.0

func UnschedulableTaint() v1.Taint

UnschedulableTaint returns the taint automatically added to unschedulable nodes on inserting into the nodeDb.

Types

type Node

type Node struct {

	// This field is set when inserting the Node into a NodeDb.
	Keys [][]byte

	AllocatableByPriority map[int32]ResourceList
	AllocatedByQueue      map[string]ResourceList
	AllocatedByJobId      map[string]ResourceList
	EvictedJobRunIds      map[string]bool
	// contains filtered or unexported fields
}

Node is a scheduler-internal representation of one Kubernetes node. Its private fields should be immutable! Do not change these!

func CreateNode added in v0.4.37

func CreateNode(
	id string,
	nodeType *NodeType,
	index uint64,
	executor string,
	name string,
	pool string,
	taints []v1.Taint,
	labels map[string]string,
	totalResources ResourceList,
	unallocatableResources map[int32]ResourceList,
	allocatableByPriority map[int32]ResourceList,
	allocatedByQueue map[string]ResourceList,
	allocatedByJobId map[string]ResourceList,
	evictedJobRunIds map[string]bool,
	keys [][]byte,
) *Node

func CreateNodeAndType added in v0.15.8

func CreateNodeAndType(
	id string,
	index uint64,
	executor string,
	name string,
	pool string,
	unschedulable bool,
	taints []v1.Taint,
	labels map[string]string,
	indexedTaints map[string]bool,
	indexedNodeLabels map[string]bool,
	totalResources ResourceList,
	unallocatableResources map[int32]ResourceList,
	allocatableByPriority map[int32]ResourceList,
) *Node

func FromSchedulerObjectsNode added in v0.13.0

func FromSchedulerObjectsNode(node *schedulerobjects.Node,
	nodeIndex uint64,
	indexedTaints map[string]bool,
	indexedNodeLabels map[string]bool,
	resourceListFactory *ResourceListFactory,
) (*Node, error)

func (*Node) DeepCopyNilKeys added in v0.9.0

func (node *Node) DeepCopyNilKeys() *Node

func (*Node) FindMatchingUntoleratedTaint added in v0.4.40

func (node *Node) FindMatchingUntoleratedTaint(tolerations ...[]v1.Toleration) (v1.Taint, bool)

func (*Node) GetExecutor added in v0.4.37

func (node *Node) GetExecutor() string

func (*Node) GetId added in v0.4.37

func (node *Node) GetId() string

func (*Node) GetIndex added in v0.4.37

func (node *Node) GetIndex() uint64

func (*Node) GetLabelValue added in v0.4.40

func (node *Node) GetLabelValue(key string) (string, bool)

func (*Node) GetLabels added in v0.4.40

func (node *Node) GetLabels() map[string]string

func (*Node) GetName added in v0.4.37

func (node *Node) GetName() string

func (*Node) GetNodeType added in v0.13.0

func (node *Node) GetNodeType() *NodeType

func (*Node) GetNodeTypeId added in v0.4.37

func (node *Node) GetNodeTypeId() uint64

func (*Node) GetPool added in v0.9.0

func (node *Node) GetPool() string

func (*Node) GetTaints added in v0.4.40

func (node *Node) GetTaints() []v1.Taint

func (*Node) GetTolerationsForTaints added in v0.4.40

func (node *Node) GetTolerationsForTaints() []v1.Toleration

func (*Node) GetTotalResources added in v0.9.0

func (node *Node) GetTotalResources() ResourceList

func (*Node) GetUnallocatableResources added in v0.15.5

func (node *Node) GetUnallocatableResources() map[int32]ResourceList

func (*Node) MatchNodeSelectorTerms added in v0.4.40

func (node *Node) MatchNodeSelectorTerms(nodeSelector *v1.NodeSelector) (bool, error)

func (*Node) SummaryString added in v0.15.5

func (node *Node) SummaryString() string

type NodeFactory added in v0.13.1

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

func NewNodeFactory added in v0.13.1

func NewNodeFactory(
	indexedTaints []string,
	indexedNodeLabels []string,
	resourceListFactory *ResourceListFactory,
) *NodeFactory

func (*NodeFactory) CreateNodeAndType added in v0.15.8

func (f *NodeFactory) CreateNodeAndType(
	id string,
	executor string,
	name string,
	pool string,
	unschedulable bool,
	taints []v1.Taint,
	labels map[string]string,
	totalResources ResourceList,
	unallocatableResources map[int32]ResourceList,
	allocatableByPriority map[int32]ResourceList,
) *Node

func (*NodeFactory) FromSchedulerObjectsExecutors added in v0.15.5

func (f *NodeFactory) FromSchedulerObjectsExecutors(executors []*schedulerobjects.Executor, errorLogger func(string)) []*Node

func (*NodeFactory) FromSchedulerObjectsNode added in v0.13.1

func (f *NodeFactory) FromSchedulerObjectsNode(node *schedulerobjects.Node) (*Node, error)

type NodeType added in v0.9.7

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

NodeType represents a particular combination of taints and labels. The scheduler groups nodes by node type. When assigning pods to nodes, the scheduler only considers nodes with a NodeType for which the taints and labels match. Its fields should be immutable! Do not change these!

func NewNodeType added in v0.9.7

func NewNodeType(taints []v1.Taint, labels map[string]string, indexedTaints map[string]bool, indexedLabels map[string]bool) *NodeType

func (*NodeType) FindMatchingUntoleratedTaint added in v0.9.7

func (m *NodeType) FindMatchingUntoleratedTaint(tolerations ...[]v1.Toleration) (v1.Taint, bool)

func (*NodeType) GetId added in v0.9.7

func (m *NodeType) GetId() uint64

func (*NodeType) GetLabelValue added in v0.9.7

func (m *NodeType) GetLabelValue(key string) (string, bool)

func (*NodeType) GetLabels added in v0.9.7

func (m *NodeType) GetLabels() map[string]string

func (*NodeType) GetTaints added in v0.9.7

func (m *NodeType) GetTaints() []v1.Taint

func (*NodeType) GetUnsetIndexedLabelValue added in v0.9.7

func (m *NodeType) GetUnsetIndexedLabelValue(key string) (string, bool)

func (*NodeType) GetUnsetIndexedLabels added in v0.9.7

func (m *NodeType) GetUnsetIndexedLabels() map[string]string

type Resource added in v0.6.0

type Resource struct {
	Name     string
	RawValue int64
	Value    k8sResource.Quantity
	Scale    k8sResource.Scale
	Type     ResourceType
}

type ResourceFractionList added in v0.15.4

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

func (ResourceFractionList) GetByName added in v0.15.4

func (rfl ResourceFractionList) GetByName(name string) (float64, error)

func (ResourceFractionList) IsEmpty added in v0.15.4

func (rfl ResourceFractionList) IsEmpty() bool

func (ResourceFractionList) Max added in v0.15.4

func (rfl ResourceFractionList) Max() float64

func (ResourceFractionList) Multiply added in v0.15.4

type ResourceList added in v0.4.48

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

func RlMapSumValues added in v0.15.4

func RlMapSumValues(m map[string]ResourceList) ResourceList

func (ResourceList) Add added in v0.6.0

func (rl ResourceList) Add(other ResourceList) ResourceList

func (ResourceList) AllZero added in v0.6.0

func (rl ResourceList) AllZero() bool

func (ResourceList) Cap added in v0.15.4

func (ResourceList) DivideZeroOnError added in v0.15.4

func (rl ResourceList) DivideZeroOnError(other ResourceList) ResourceFractionList

Divide, return 0 on attempt to divide by 0

func (ResourceList) Equal added in v0.6.0

func (rl ResourceList) Equal(other ResourceList) bool

func (ResourceList) Exceeds added in v0.15.4

func (rl ResourceList) Exceeds(other ResourceList) bool

func (ResourceList) ExceedsAvailable added in v0.6.0

func (rl ResourceList) ExceedsAvailable(available ResourceList) (string, k8sResource.Quantity, k8sResource.Quantity, bool)

ExceedsAvailable - if any resource in this ResourceList is greater than the equivalent resource in param available, this function returns

  • the name of the relevant resource
  • the amount of the relevant resource in available
  • the amount of the relevant resource in this ResourceList
  • true

- if no resources in this ResourceList exceed available, the last return value is false. - empty resource lists are considered equivalent to all zero.

func (ResourceList) Factory added in v0.15.4

func (rl ResourceList) Factory() *ResourceListFactory

func (ResourceList) FloorAtZero added in v0.14.1

func (rl ResourceList) FloorAtZero() ResourceList

func (ResourceList) GetByName added in v0.4.48

func (rl ResourceList) GetByName(name string) (int64, error)

func (ResourceList) GetByNameZeroIfMissing added in v0.6.0

func (rl ResourceList) GetByNameZeroIfMissing(name string) int64

func (ResourceList) GetResourceByNameZeroIfMissing added in v0.15.4

func (rl ResourceList) GetResourceByNameZeroIfMissing(name string) k8sResource.Quantity

func (ResourceList) GetResources added in v0.6.0

func (rl ResourceList) GetResources() []Resource

func (ResourceList) HasNegativeValues added in v0.6.0

func (rl ResourceList) HasNegativeValues() bool

func (ResourceList) IsEmpty added in v0.6.0

func (rl ResourceList) IsEmpty() bool

func (ResourceList) Multiply added in v0.15.4

func (rl ResourceList) Multiply(multipliers ResourceFractionList) ResourceList

func (ResourceList) Negate added in v0.6.0

func (rl ResourceList) Negate() ResourceList

func (ResourceList) OfType added in v0.14.0

func (rl ResourceList) OfType(t ResourceType) ResourceList

func (ResourceList) String added in v0.6.0

func (rl ResourceList) String() string

func (ResourceList) Subtract added in v0.6.0

func (rl ResourceList) Subtract(other ResourceList) ResourceList

func (ResourceList) ToMap added in v0.13.0

func (rl ResourceList) ToMap() map[string]k8sResource.Quantity

type ResourceListFactory added in v0.4.48

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

func NewResourceListFactory added in v0.13.1

func NewResourceListFactory(
	supportedResourceTypes []configuration.ResourceType,
	floatingResourceTypes []configuration.FloatingResourceConfig,
) (*ResourceListFactory, error)

func (*ResourceListFactory) FromJobResourceListFailOnUnknown added in v0.6.0

func (factory *ResourceListFactory) FromJobResourceListFailOnUnknown(resources map[string]k8sResource.Quantity) (ResourceList, error)

Fail on unknown resources, round up.

func (*ResourceListFactory) FromJobResourceListIgnoreUnknown added in v0.6.0

func (factory *ResourceListFactory) FromJobResourceListIgnoreUnknown(resources map[string]k8sResource.Quantity) ResourceList

Ignore unknown resources, round up.

func (*ResourceListFactory) FromNodeProto added in v0.4.48

func (factory *ResourceListFactory) FromNodeProto(resources map[string]k8sResource.Quantity) ResourceList

Ignore unknown resources, round down.

func (*ResourceListFactory) GetScale added in v0.6.0

func (factory *ResourceListFactory) GetScale(resourceTypeName string) (k8sResource.Scale, error)

func (*ResourceListFactory) MakeAllMax added in v0.15.8

func (factory *ResourceListFactory) MakeAllMax() ResourceList

func (*ResourceListFactory) MakeAllZero added in v0.6.0

func (factory *ResourceListFactory) MakeAllZero() ResourceList

func (*ResourceListFactory) MakeResourceFractionList added in v0.15.4

func (factory *ResourceListFactory) MakeResourceFractionList(m map[string]float64, defaultValue float64) ResourceFractionList

func (*ResourceListFactory) SummaryString added in v0.4.48

func (factory *ResourceListFactory) SummaryString() string

type ResourceType added in v0.14.0

type ResourceType int
const (
	// A normal k8s resource, such as "memory" or "nvidia.com/gpu"
	Kubernetes ResourceType = iota
	// A floating resource that is not tied to a Kubernetes cluster or node,
	// e.g. "external-storage-connections".
	Floating = iota
)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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