cdktf-crd
Version:
143 lines (142 loc) • 8.95 kB
TypeScript
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;
};
};
};
}