UNPKG

cdktf-crd

Version:
143 lines (142 loc) 8.95 kB
import { Manifest, type ManifestConfig } from "@cdktf/provider-kubernetes/lib/manifest"; import { Construct } from "constructs"; export declare class KubernetesCohortV1alpha1Manifest extends Manifest { constructor(scope: Construct, id: string, config: KubernetesCohortV1alpha1ManifestConfig); } export interface KubernetesCohortV1alpha1ManifestConfig extends ManifestConfig { manifest: { apiVersion?: "kueue.x-k8s.io/v1alpha1"; kind?: "Cohort"; metadata: { annotations?: { [key: string]: string; }; labels?: { [key: string]: string; }; name: string; namespace?: string; }; /** @description CohortSpec defines the desired state of Cohort */ spec?: { /** @description fairSharing defines the properties of the Cohort when * participating in FairSharing. The values are only relevant * if FairSharing is enabled in the Kueue configuration. */ fairSharing?: { /** @description weight gives a comparative advantage to this ClusterQueue * or Cohort when competing for unused resources in the * Cohort. The share is based on the dominant resource usage * above nominal quotas for each resource, divided by the * weight. Admission prioritizes scheduling workloads from * ClusterQueues and Cohorts with the lowest share and * preempting workloads from the ClusterQueues and Cohorts * with the highest share. A zero weight implies infinite * share value, meaning that this Node will always be at * disadvantage against other ClusterQueues and Cohorts. */ weight?: number | string; }; /** @description Parent references the name of the Cohort's parent, if * any. It satisfies one of three cases: * 1) Unset. This Cohort is the root of its Cohort tree. * 2) References a non-existent Cohort. We use default Cohort (no borrowing/lending limits). * 3) References an existent Cohort. * * If a cycle is created, we disable all members of the * Cohort, including ClusterQueues, until the cycle is * removed. We prevent further admission while the cycle * exists. */ parent?: string; /** @description ResourceGroups describes groupings of Resources and * Flavors. Each ResourceGroup defines a list of Resources * and a list of Flavors which provide quotas for these * Resources. Each Resource and each Flavor may only form part * of one ResourceGroup. There may be up to 16 ResourceGroups * within a Cohort. * * BorrowingLimit limits how much members of this Cohort * subtree can borrow from the parent subtree. * * LendingLimit limits how much members of this Cohort subtree * can lend to the parent subtree. * * Borrowing and Lending limits must only be set when the * Cohort has a parent. Otherwise, the Cohort create/update * will be rejected by the webhook. */ resourceGroups?: { /** @description coveredResources is the list of resources covered by the flavors in this * group. * Examples: cpu, memory, vendor.com/gpu. * The list cannot be empty and it can contain up to 16 resources. */ coveredResources: string[]; /** @description flavors is the list of flavors that provide the resources of this group. * Typically, different flavors represent different hardware models * (e.g., gpu models, cpu architectures) or pricing models (on-demand vs spot * cpus). * Each flavor MUST list all the resources listed for this group in the same * order as the .resources field. * The list cannot be empty and it can contain up to 16 flavors. */ flavors: { /** @description name of this flavor. The name should match the .metadata.name of a * ResourceFlavor. If a matching ResourceFlavor does not exist, the * ClusterQueue will have an Active condition set to False. */ name: string; /** @description resources is the list of quotas for this flavor per resource. * There could be up to 16 resources. */ resources: { /** @description borrowingLimit is the maximum amount of quota for the [flavor, resource] * combination that this ClusterQueue is allowed to borrow from the unused * quota of other ClusterQueues in the same cohort. * In total, at a given time, Workloads in a ClusterQueue can consume a * quantity of quota equal to nominalQuota+borrowingLimit, assuming the other * ClusterQueues in the cohort have enough unused quota. * If null, it means that there is no borrowing limit. * If not null, it must be non-negative. * borrowingLimit must be null if spec.cohort is empty. */ borrowingLimit?: number | string; /** @description lendingLimit is the maximum amount of unused quota for the [flavor, resource] * combination that this ClusterQueue can lend to other ClusterQueues in the same cohort. * In total, at a given time, ClusterQueue reserves for its exclusive use * a quantity of quota equals to nominalQuota - lendingLimit. * If null, it means that there is no lending limit, meaning that * all the nominalQuota can be borrowed by other clusterQueues in the cohort. * If not null, it must be non-negative. * lendingLimit must be null if spec.cohort is empty. * This field is in beta stage and is enabled by default. */ lendingLimit?: number | string; /** @description name of this resource. */ name: string; /** @description nominalQuota is the quantity of this resource that is available for * Workloads admitted by this ClusterQueue at a point in time. * The nominalQuota must be non-negative. * nominalQuota should represent the resources in the cluster available for * running jobs (after discounting resources consumed by system components * and pods not managed by kueue). In an autoscaled cluster, nominalQuota * should account for resources that can be provided by a component such as * Kubernetes cluster-autoscaler. * * If the ClusterQueue belongs to a cohort, the sum of the quotas for each * (flavor, resource) combination defines the maximum quantity that can be * allocated by a ClusterQueue in the cohort. */ nominalQuota: number | string; }[]; }[]; }[]; }; status?: { /** @description fairSharing contains the information about the current status of Fair Sharing. */ fairSharing?: { /** * Format: int64 * @description WeightedShare represent the maximum of the ratios of usage * above nominal quota to the lendable resources in the * Cohort, among all the resources provided by the Node, and * divided by the weight. If zero, it means that the usage of * the Node is below the nominal quota. If the Node has a * weight of zero, this will return 9223372036854775807, the * maximum possible share value. */ weightedShare: number; }; }; }; }