Documentation
¶
Index ¶
- Variables
- type AdmissionCheck
- type Cache
- func (c *Cache) ActiveClusterQueues() sets.Set[string]
- func (c *Cache) AddClusterQueue(ctx context.Context, cq *kueue.ClusterQueue) error
- func (c *Cache) AddLocalQueue(q *kueue.LocalQueue) error
- func (c *Cache) AddOrUpdateAdmissionCheck(ac *kueue.AdmissionCheck) sets.Set[string]
- func (c *Cache) AddOrUpdateCohort(apiCohort *kueuealpha.Cohort) error
- func (c *Cache) AddOrUpdateResourceFlavor(rf *kueue.ResourceFlavor) sets.Set[string]
- func (c *Cache) AddOrUpdateWorkload(w *kueue.Workload) bool
- func (c *Cache) AdmissionChecksForClusterQueue(cqName string) []AdmissionCheck
- func (c *Cache) AssumeWorkload(w *kueue.Workload) error
- func (c *Cache) CleanUpOnContext(ctx context.Context)
- func (c *Cache) ClusterQueueActive(name string) bool
- func (c *Cache) ClusterQueueEmpty(name string) bool
- func (c *Cache) ClusterQueueReadiness(name string) (metav1.ConditionStatus, string, string)
- func (c *Cache) ClusterQueueTerminating(name string) bool
- func (c *Cache) ClusterQueuesUsingAdmissionCheck(ac string) []string
- func (c *Cache) ClusterQueuesUsingFlavor(flavor kueue.ResourceFlavorReference) []string
- func (c *Cache) DeleteAdmissionCheck(ac *kueue.AdmissionCheck) sets.Set[string]
- func (c *Cache) DeleteClusterQueue(cq *kueue.ClusterQueue)
- func (c *Cache) DeleteCohort(cohortName string)
- func (c *Cache) DeleteLocalQueue(q *kueue.LocalQueue)
- func (c *Cache) DeleteResourceFlavor(rf *kueue.ResourceFlavor) sets.Set[string]
- func (c *Cache) DeleteWorkload(w *kueue.Workload) error
- func (c *Cache) ForgetWorkload(w *kueue.Workload) error
- func (c *Cache) IsAssumedOrAdmittedWorkload(w workload.Info) bool
- func (c *Cache) LocalQueueUsage(qObj *kueue.LocalQueue) (*LocalQueueUsageStats, error)
- func (c *Cache) MatchingClusterQueues(nsLabels map[string]string) sets.Set[string]
- func (c *Cache) PodsReadyForAllAdmittedWorkloads(log logr.Logger) bool
- func (c *Cache) Snapshot(ctx context.Context) (*Snapshot, error)
- func (c *Cache) TASCache() *TASCache
- func (c *Cache) TerminateClusterQueue(name string)
- func (c *Cache) UpdateClusterQueue(cq *kueue.ClusterQueue) error
- func (c *Cache) UpdateLocalQueue(oldQ, newQ *kueue.LocalQueue) error
- func (c *Cache) UpdateWorkload(oldWl, newWl *kueue.Workload) error
- func (c *Cache) Usage(cqObj *kueue.ClusterQueue) (*ClusterQueueUsageStats, error)
- func (c *Cache) WaitForPodsReady(ctx context.Context)
- type ClusterQueueSnapshot
- func (c *ClusterQueueSnapshot) AddUsage(frq resources.FlavorResourceQuantities)
- func (c *ClusterQueueSnapshot) Available(fr resources.FlavorResource) int64
- func (c *ClusterQueueSnapshot) Borrowing(fr resources.FlavorResource) bool
- func (c *ClusterQueueSnapshot) BorrowingWith(fr resources.FlavorResource, val int64) bool
- func (c *ClusterQueueSnapshot) DominantResourceShare() (int, corev1.ResourceName)
- func (c *ClusterQueueSnapshot) DominantResourceShareWith(wlReq resources.FlavorResourceQuantities) (int, corev1.ResourceName)
- func (c *ClusterQueueSnapshot) DominantResourceShareWithout(wlReq resources.FlavorResourceQuantities) (int, corev1.ResourceName)
- func (c *ClusterQueueSnapshot) Fits(frq resources.FlavorResourceQuantities) bool
- func (c *ClusterQueueSnapshot) GetName() string
- func (c *ClusterQueueSnapshot) PotentialAvailable(fr resources.FlavorResource) int64
- func (c *ClusterQueueSnapshot) QuotaFor(fr resources.FlavorResource) ResourceQuota
- func (c *ClusterQueueSnapshot) RGByResource(resource corev1.ResourceName) *ResourceGroup
- type ClusterQueueUsageStats
- type CohortSnapshot
- type LocalQueueUsageStats
- type Option
- type ResourceGroup
- type ResourceNode
- type ResourceQuota
- type Snapshot
- type TASCache
- func (t *TASCache) Clone() map[kueue.ResourceFlavorReference]*TASFlavorCache
- func (t *TASCache) Delete(name kueue.ResourceFlavorReference)
- func (t *TASCache) Get(name kueue.ResourceFlavorReference) *TASFlavorCache
- func (t *TASCache) NewTASFlavorCache(topologyName kueue.TopologyReference, levels []string, ...) *TASFlavorCache
- func (t *TASCache) Set(name kueue.ResourceFlavorReference, info *TASFlavorCache)
- type TASFlavorCache
- type TASFlavorSnapshot
Constants ¶
This section is empty.
Variables ¶
var (
ErrCqNotFound = errors.New("cluster queue not found")
)
Functions ¶
This section is empty.
Types ¶
type AdmissionCheck ¶ added in v0.5.0
type AdmissionCheck struct {
Active bool
Controller string
SingleInstanceInClusterQueue bool
FlavorIndependent bool
}
type Cache ¶
type Cache struct {
sync.RWMutex
// contains filtered or unexported fields
}
Cache keeps track of the Workloads that got admitted through ClusterQueues.
func (*Cache) ActiveClusterQueues ¶ added in v0.9.0
func (c *Cache) ActiveClusterQueues() sets.Set[string]
func (*Cache) AddClusterQueue ¶
func (c *Cache) AddClusterQueue(ctx context.Context, cq *kueue.ClusterQueue) error
func (*Cache) AddLocalQueue ¶ added in v0.2.0
func (c *Cache) AddLocalQueue(q *kueue.LocalQueue) error
func (*Cache) AddOrUpdateAdmissionCheck ¶ added in v0.5.0
func (c *Cache) AddOrUpdateAdmissionCheck(ac *kueue.AdmissionCheck) sets.Set[string]
func (*Cache) AddOrUpdateCohort ¶ added in v0.9.0
func (c *Cache) AddOrUpdateCohort(apiCohort *kueuealpha.Cohort) error
func (*Cache) AddOrUpdateResourceFlavor ¶
func (c *Cache) AddOrUpdateResourceFlavor(rf *kueue.ResourceFlavor) sets.Set[string]
func (*Cache) AddOrUpdateWorkload ¶
func (c *Cache) AddOrUpdateWorkload(w *kueue.Workload) bool
func (*Cache) AdmissionChecksForClusterQueue ¶ added in v0.7.0
func (c *Cache) AdmissionChecksForClusterQueue(cqName string) []AdmissionCheck
func (*Cache) AssumeWorkload ¶
func (c *Cache) AssumeWorkload(w *kueue.Workload) error
func (*Cache) CleanUpOnContext ¶ added in v0.3.0
func (c *Cache) CleanUpOnContext(ctx context.Context)
CleanUpOnContext tracks the context. When closed, it wakes routines waiting on the podsReady condition. It should be called before doing any calls to cache.WaitForPodsReady.
func (*Cache) ClusterQueueActive ¶ added in v0.2.0
func (c *Cache) ClusterQueueActive(name string) bool
func (*Cache) ClusterQueueEmpty ¶ added in v0.2.0
func (c *Cache) ClusterQueueEmpty(name string) bool
ClusterQueueEmpty indicates whether there's any active workload admitted by the provided clusterQueue. Return true if the clusterQueue doesn't exist.
func (*Cache) ClusterQueueReadiness ¶ added in v0.5.0
func (c *Cache) ClusterQueueReadiness(name string) (metav1.ConditionStatus, string, string)
func (*Cache) ClusterQueueTerminating ¶ added in v0.2.0
func (c *Cache) ClusterQueueTerminating(name string) bool
func (*Cache) ClusterQueuesUsingAdmissionCheck ¶ added in v0.5.0
func (c *Cache) ClusterQueuesUsingAdmissionCheck(ac string) []string
func (*Cache) ClusterQueuesUsingFlavor ¶ added in v0.3.0
func (c *Cache) ClusterQueuesUsingFlavor(flavor kueue.ResourceFlavorReference) []string
func (*Cache) DeleteAdmissionCheck ¶ added in v0.5.0
func (c *Cache) DeleteAdmissionCheck(ac *kueue.AdmissionCheck) sets.Set[string]
func (*Cache) DeleteClusterQueue ¶
func (c *Cache) DeleteClusterQueue(cq *kueue.ClusterQueue)
func (*Cache) DeleteCohort ¶ added in v0.9.0
func (c *Cache) DeleteCohort(cohortName string)
func (*Cache) DeleteLocalQueue ¶ added in v0.2.0
func (c *Cache) DeleteLocalQueue(q *kueue.LocalQueue)
func (*Cache) DeleteResourceFlavor ¶
func (c *Cache) DeleteResourceFlavor(rf *kueue.ResourceFlavor) sets.Set[string]
func (*Cache) DeleteWorkload ¶
func (c *Cache) DeleteWorkload(w *kueue.Workload) error
func (*Cache) ForgetWorkload ¶
func (c *Cache) ForgetWorkload(w *kueue.Workload) error
func (*Cache) IsAssumedOrAdmittedWorkload ¶ added in v0.3.0
func (c *Cache) IsAssumedOrAdmittedWorkload(w workload.Info) bool
func (*Cache) LocalQueueUsage ¶ added in v0.4.0
func (c *Cache) LocalQueueUsage(qObj *kueue.LocalQueue) (*LocalQueueUsageStats, error)
func (*Cache) MatchingClusterQueues ¶ added in v0.2.0
func (c *Cache) MatchingClusterQueues(nsLabels map[string]string) sets.Set[string]
func (*Cache) PodsReadyForAllAdmittedWorkloads ¶ added in v0.3.0
func (c *Cache) PodsReadyForAllAdmittedWorkloads(log logr.Logger) bool
func (*Cache) TerminateClusterQueue ¶ added in v0.2.0
func (c *Cache) TerminateClusterQueue(name string)
func (*Cache) UpdateClusterQueue ¶
func (c *Cache) UpdateClusterQueue(cq *kueue.ClusterQueue) error
func (*Cache) UpdateLocalQueue ¶ added in v0.2.0
func (c *Cache) UpdateLocalQueue(oldQ, newQ *kueue.LocalQueue) error
func (*Cache) UpdateWorkload ¶
func (c *Cache) UpdateWorkload(oldWl, newWl *kueue.Workload) error
func (*Cache) Usage ¶
func (c *Cache) Usage(cqObj *kueue.ClusterQueue) (*ClusterQueueUsageStats, error)
Usage reports the reserved and admitted resources and number of workloads holding them in the ClusterQueue.
func (*Cache) WaitForPodsReady ¶ added in v0.3.0
func (c *Cache) WaitForPodsReady(ctx context.Context)
WaitForPodsReady waits for all admitted workloads to be in the PodsReady condition if podsReadyTracking is enabled, otherwise returns immediately.
type ClusterQueueSnapshot ¶ added in v0.8.0
type ClusterQueueSnapshot struct {
Name string
ResourceGroups []ResourceGroup
Workloads map[string]*workload.Info
WorkloadsNotReady sets.Set[string]
NamespaceSelector labels.Selector
Preemption kueue.ClusterQueuePreemption
FairWeight resource.Quantity
FlavorFungibility kueue.FlavorFungibility
// Aggregates AdmissionChecks from both .spec.AdmissionChecks and .spec.AdmissionCheckStrategy
// Sets hold ResourceFlavors to which an AdmissionCheck should apply.
// In case its empty, it means an AdmissionCheck should apply to all ResourceFlavor
AdmissionChecks map[string]sets.Set[kueue.ResourceFlavorReference]
Status metrics.ClusterQueueStatus
// AllocatableResourceGeneration will be increased when some admitted workloads are
// deleted, or the resource groups are changed.
AllocatableResourceGeneration int64
ResourceNode ResourceNode
hierarchy.ClusterQueue[*CohortSnapshot]
TASFlavors map[kueue.ResourceFlavorReference]*TASFlavorSnapshot
}
func (*ClusterQueueSnapshot) AddUsage ¶ added in v0.8.0
func (c *ClusterQueueSnapshot) AddUsage(frq resources.FlavorResourceQuantities)
func (*ClusterQueueSnapshot) Available ¶ added in v0.8.0
func (c *ClusterQueueSnapshot) Available(fr resources.FlavorResource) int64
Available returns the current capacity available, before preempting any workloads. Includes local capacity and capacity borrowed from Cohort. When the ClusterQueue/Cohort is in debt, Available will return 0.
func (*ClusterQueueSnapshot) Borrowing ¶ added in v0.8.0
func (c *ClusterQueueSnapshot) Borrowing(fr resources.FlavorResource) bool
func (*ClusterQueueSnapshot) BorrowingWith ¶ added in v0.8.0
func (c *ClusterQueueSnapshot) BorrowingWith(fr resources.FlavorResource, val int64) bool
func (*ClusterQueueSnapshot) DominantResourceShare ¶ added in v0.8.0
func (c *ClusterQueueSnapshot) DominantResourceShare() (int, corev1.ResourceName)
DominantResourceShare returns a value from 0 to 1,000,000 representing the maximum of the ratios of usage above nominal quota to the lendable resources in the cohort, among all the resources provided by the ClusterQueue, and divided by the weight. If zero, it means that the usage of the ClusterQueue is below the nominal quota. The function also returns the resource name that yielded this value. Also for a weight of zero, this will return 9223372036854775807.
func (*ClusterQueueSnapshot) DominantResourceShareWith ¶ added in v0.8.0
func (c *ClusterQueueSnapshot) DominantResourceShareWith(wlReq resources.FlavorResourceQuantities) (int, corev1.ResourceName)
func (*ClusterQueueSnapshot) DominantResourceShareWithout ¶ added in v0.8.0
func (c *ClusterQueueSnapshot) DominantResourceShareWithout(wlReq resources.FlavorResourceQuantities) (int, corev1.ResourceName)
func (*ClusterQueueSnapshot) Fits ¶ added in v0.8.0
func (c *ClusterQueueSnapshot) Fits(frq resources.FlavorResourceQuantities) bool
func (*ClusterQueueSnapshot) GetName ¶ added in v0.9.0
func (c *ClusterQueueSnapshot) GetName() string
func (*ClusterQueueSnapshot) PotentialAvailable ¶ added in v0.8.4
func (c *ClusterQueueSnapshot) PotentialAvailable(fr resources.FlavorResource) int64
PotentialAvailable returns the largest workload this ClusterQueue could possibly admit, accounting for its capacity and capacity borrowed its from Cohort.
func (*ClusterQueueSnapshot) QuotaFor ¶ added in v0.8.0
func (c *ClusterQueueSnapshot) QuotaFor(fr resources.FlavorResource) ResourceQuota
func (*ClusterQueueSnapshot) RGByResource ¶ added in v0.8.0
func (c *ClusterQueueSnapshot) RGByResource(resource corev1.ResourceName) *ResourceGroup
RGByResource returns the ResourceGroup which contains capacity for the resource, or nil if the CQ doesn't provide this resource.
type ClusterQueueUsageStats ¶ added in v0.5.0
type ClusterQueueUsageStats struct {
ReservedResources []kueue.FlavorUsage
ReservingWorkloads int
AdmittedResources []kueue.FlavorUsage
AdmittedWorkloads int
WeightedShare int64
}
type CohortSnapshot ¶ added in v0.8.0
type CohortSnapshot struct {
Name string
ResourceNode ResourceNode
hierarchy.Cohort[*ClusterQueueSnapshot, *CohortSnapshot]
}
type LocalQueueUsageStats ¶ added in v0.5.0
type LocalQueueUsageStats struct {
ReservedResources []kueue.LocalQueueFlavorUsage
ReservingWorkloads int
AdmittedResources []kueue.LocalQueueFlavorUsage
AdmittedWorkloads int
Flavors []kueue.LocalQueueFlavorStatus
}
type Option ¶ added in v0.3.0
type Option func(*options)
Option configures the reconciler.
func WithExcludedResourcePrefixes ¶ added in v0.7.0
func WithExcludedResourcePrefixes(excludedPrefixes []string) Option
func WithFairSharing ¶ added in v0.7.0
func WithFairSharing(enabled bool) Option
func WithPodsReadyTracking ¶ added in v0.3.0
func WithPodsReadyTracking(f bool) Option
WithPodsReadyTracking indicates the cache controller tracks the PodsReady condition for admitted workloads, and allows to block admission of new workloads until all admitted workloads are in the PodsReady condition.
func WithResourceTransformations ¶ added in v0.9.0
func WithResourceTransformations(transforms []config.ResourceTransformation) Option
WithResourceTransformations sets the resource transformations.
type ResourceGroup ¶ added in v0.3.0
type ResourceGroup struct {
CoveredResources sets.Set[corev1.ResourceName]
Flavors []kueue.ResourceFlavorReference
// The set of key labels from all flavors.
// Those keys define the affinity terms of a workload
// that can be matched against the flavors.
LabelKeys sets.Set[string]
}
type ResourceNode ¶ added in v0.9.0
type ResourceNode struct {
// Quotas are the ResourceQuotas specified for the current
// node.
Quotas map[resources.FlavorResource]ResourceQuota
// SubtreeQuota is the sum of the node's quota, as well as
// resources available from its children, constrained by
// LendingLimits.
SubtreeQuota resources.FlavorResourceQuantities
// Usage is the quantity which counts against this node's
// SubtreeQuota. For ClusterQueues, this is simply its
// usage. For Cohorts, this is the sum of childrens'
// usages past childrens' guaranteedQuotas.
Usage resources.FlavorResourceQuantities
}
func NewResourceNode ¶ added in v0.9.0
func NewResourceNode() ResourceNode
type ResourceQuota ¶ added in v0.3.0
type ResourceQuota struct {
Nominal int64
BorrowingLimit *int64
LendingLimit *int64
}
type Snapshot ¶
type Snapshot struct {
hierarchy.Manager[*ClusterQueueSnapshot, *CohortSnapshot]
ResourceFlavors map[kueue.ResourceFlavorReference]*kueue.ResourceFlavor
InactiveClusterQueueSets sets.Set[string]
}
func (*Snapshot) AddWorkload ¶ added in v0.3.0
func (s *Snapshot) AddWorkload(wl *workload.Info)
AddWorkload adds a workload from its corresponding ClusterQueue and updates resource usage.
func (*Snapshot) RemoveWorkload ¶ added in v0.3.0
func (s *Snapshot) RemoveWorkload(wl *workload.Info)
RemoveWorkload removes a workload from its corresponding ClusterQueue and updates resource usage.
type TASCache ¶ added in v0.9.0
type TASCache struct {
sync.RWMutex
// contains filtered or unexported fields
}
func NewTASCache ¶ added in v0.9.0
func NewTASCache(client client.Client) TASCache
func (*TASCache) Clone ¶ added in v0.9.0
func (t *TASCache) Clone() map[kueue.ResourceFlavorReference]*TASFlavorCache
Clone returns a shallow copy of the map
func (*TASCache) Delete ¶ added in v0.9.0
func (t *TASCache) Delete(name kueue.ResourceFlavorReference)
func (*TASCache) Get ¶ added in v0.9.0
func (t *TASCache) Get(name kueue.ResourceFlavorReference) *TASFlavorCache
func (*TASCache) NewTASFlavorCache ¶ added in v0.9.0
func (t *TASCache) NewTASFlavorCache(topologyName kueue.TopologyReference, levels []string, nodeLabels map[string]string) *TASFlavorCache
type TASFlavorCache ¶ added in v0.9.0
type TASFlavorCache struct {
sync.RWMutex
// TopologyName indicates the name of the topology specified in the
// ResourceFlavor spec.topologyName field.
TopologyName kueue.TopologyReference
// nodeLabels is a map of nodeLabels defined in the ResourceFlavor object.
NodeLabels map[string]string
// levels is a list of levels defined in the Topology object referenced
// by the flavor corresponding to the cache.
Levels []string
// contains filtered or unexported fields
}
type TASFlavorSnapshot ¶ added in v0.9.0
type TASFlavorSnapshot struct {
// contains filtered or unexported fields
}
func (*TASFlavorSnapshot) FindTopologyAssignment ¶ added in v0.9.0
func (s *TASFlavorSnapshot) FindTopologyAssignment(
topologyRequest *kueue.PodSetTopologyRequest,
requests resources.Requests,
count int32,
tolerations []corev1.Toleration) (*kueue.TopologyAssignment, string)
Algorithm overview: Phase 1:
determine pod counts for each topology domain. Start at the lowest level
and bubble up the numbers to the top level
Phase 2:
a) select the domain at requested level with count >= requestedCount
b) traverse the structure down level-by-level optimizing the number of used
domains at each level
c) build the assignment for the lowest level in the hierarchy