kubernetes-models
Version:
39 lines (38 loc) • 3.48 kB
TypeScript
import { IIoK8sApimachineryPkgApiResourceQuantity } from "@kubernetes-models/apimachinery/api/resource/Quantity";
import { ModelData, Model } from "@kubernetes-models/base";
/**
* NodeAllocatableResourceMapping defines the translation between the DRA device/capacity units requested to the corresponding quantity of the node allocatable resource.
*/
export interface INodeAllocatableResourceMapping {
/**
* AllocationMultiplier is used as a multiplier for the allocated device count or the allocated capacity in the claim. It defaults to 1 if not specified. How the field is used also depends on whether `capacityKey` is set. 1. If `capacityKey` is NOT set: `allocationMultiplier` multiplies the device count allocated to the claim.
* a. A DRA driver representing each CPU core as a device would have
* {ResourceName: "cpu", allocationMultiplier: "2"} in its
* `nodeAllocatableResourceMappings`. If 4 devices are allocated to the claim,
* 4 \* 2 CPUs would be considered as allocated and subtracted from the node's capacity.
* b. A GPU device that needs additional node memory per GPU allocation would
* have {ResourceName: "memory", allocationMultiplier: "2Gi"}. Each allocated
* GPU device instance of this type will account for 2Gi of memory.
*
* 2. If `capacityKey` IS set: `allocationMultiplier` is multiplied by the amount of that capacity consumed.
* The final node allocatable resource amount is `consumedCapacity[capacityKey]` \* `allocationMultiplier`.
* For example, if a Device's capacity "dra.example.com/cores" is consumed,
* and each "core" provides 2 "cpu"s, the mapping would be:
* {ResourceName: "cpu", capacityKey: "dra.example.com/cores", allocationMultiplier: "2"}.
* If a claim consumes 8 "dra.example.com/cores", the CPU footprint is 8 \* 2 = 16.
*/
"allocationMultiplier"?: IIoK8sApimachineryPkgApiResourceQuantity;
/**
* CapacityKey references a capacity name defined as a key in the `spec.devices[\*].capacity` map. When this field is set, the value associated with this key in the `status.allocation.devices.results[\*].consumedCapacity` map (for a specific claim allocation) determines the base quantity for the node allocatable resource. If `allocationMultiplier` is also set, it is multiplied with the base quantity. For example, if `spec.devices[\*].capacity` has an entry "dra.example.com/memory": "128Gi", and this field is set to "dra.example.com/memory", then for a claim allocation that consumes { "dra.example.com/memory": "4Gi" } the base quantity for the node allocatable resource mapping will be "4Gi", and `allocationMultiplier` should be omitted or set to "1".
*/
"capacityKey"?: string;
}
/**
* NodeAllocatableResourceMapping defines the translation between the DRA device/capacity units requested to the corresponding quantity of the node allocatable resource.
*/
export declare class NodeAllocatableResourceMapping extends Model<INodeAllocatableResourceMapping> implements INodeAllocatableResourceMapping {
"allocationMultiplier"?: IIoK8sApimachineryPkgApiResourceQuantity;
"capacityKey"?: string;
constructor(data?: ModelData<INodeAllocatableResourceMapping>);
}
export type { INodeAllocatableResourceMapping as IIoK8sApiResourceV1NodeAllocatableResourceMapping, NodeAllocatableResourceMapping as IoK8sApiResourceV1NodeAllocatableResourceMapping };