NodePoolSpec: {
    annotations?: Values;
    consolidation?: {
        enabled: boolean;
    };
    disruption?: {
        budgets?: DisruptionBudget[];
        consolidateAfter?: Sec | Min | Hour;
        consolidationPolicy?: "WhenUnderutilized" | "WhenEmpty";
        expireAfter?:
            | "Never"
            | Sec
            | Min
            | Hour;
    };
    labels?: Values;
    limits?: {
        cpu?: number;
        memory?: string;
        [k: string]: unknown;
    };
    requirements?: NodePoolRequirementValues;
    startupTaints?: Taint[];
    taints?: Taint[];
    ttlSecondsAfterEmpty?: number;
    ttlSecondsUntilExpired?: number;
    weight?: number;
}

Utility type for Karpenter NodePool Specs

Type declaration

  • Optionalannotations?: Values

    Annotations applied to all nodes

  • Optionalconsolidation?: {
        enabled: boolean;
    }

    Enables consolidation which attempts to reduce cluster cost by both removing un-needed nodes and down-sizing those that can't be removed. Mutually exclusive with the ttlSecondsAfterEmpty parameter.

    Replaced with disruption.consolidationPolicy for versions v0.32.x and later

    • enabled: boolean
  • Optionaldisruption?: {
        budgets?: DisruptionBudget[];
        consolidateAfter?: Sec | Min | Hour;
        consolidationPolicy?: "WhenUnderutilized" | "WhenEmpty";
        expireAfter?:
            | "Never"
            | Sec
            | Min
            | Hour;
    }

    Disruption section which describes the ways in which Karpenter can disrupt and replace Nodes Configuration in this section constrains how aggressive Karpenter can be with performing operations like rolling Nodes due to them hitting their maximum lifetime (expiry) or scaling down nodes to reduce cluster cost Only applicable for versions v0.32 or later

    consolidation policy - will default to WhenUnderutilized if not provided

    How long Karpenter waits to consolidate nodes - cannot be set when the policy is WhenUnderutilized

    How long Karpenter waits to expire nodes

    • Optionalbudgets?: DisruptionBudget[]
    • OptionalconsolidateAfter?: Sec | Min | Hour
    • OptionalconsolidationPolicy?: "WhenUnderutilized" | "WhenEmpty"
    • OptionalexpireAfter?:
          | "Never"
          | Sec
          | Min
          | Hour
  • Optionallabels?: Values

    Labels applied to all nodes

  • Optionallimits?: {
        cpu?: number;
        memory?: string;
        [k: string]: unknown;
    }

    Limits define a set of bounds for provisioning capacity. Resource limits constrain the total size of the cluster. Limits prevent Karpenter from creating new instances once the limit is exceeded.

    • [k: string]: unknown

      Extended resources are fully-qualified resource names outside the kubernetes.io domain. They allow cluster operators to advertise and users to consume the non-Kubernetes-built-in resources such as hardware devices GPUs, RDMAs, SR-IOVs... e.g nvidia.com/gpu, amd.com/gpu, etc...

    • Optionalcpu?: number
    • Optionalmemory?: string
  • Optionalrequirements?: NodePoolRequirementValues

    Requirement properties for Node Pool (Optional) - If not provided, the add-on will deploy one with no value, providing no restrictions when Karpenter optimizes.

  • OptionalstartupTaints?: Taint[]

    Provisioned nodes will have these taints, but pods do not need to tolerate these taints to be provisioned by this provisioner. These taints are expected to be temporary and some other entity (e.g. a DaemonSet) is responsible for removing the taint after it has finished initializing the node.

  • Optionaltaints?: Taint[]

    Taints for the provisioned nodes - Taints may prevent pods from scheduling if they are not tolerated by the pod.

  • OptionalttlSecondsAfterEmpty?: number

    How many seconds Karpenter will wailt until it deletes empty/unnecessary instances (in seconds). Mutually exclusive with the consolidation parameter.

    Replaced with disruption.consolidationPolicy and disruption.consolidateAfter for versions v0.32.x and later

  • OptionalttlSecondsUntilExpired?: number

    If omitted, the feature is disabled and nodes will never expire. If set to less time than it requires for a node to become ready, the node may expire before any pods successfully start.

    Replaced with disruption.expireAfter for versions v0.32.x and later

  • Optionalweight?: number

    Priority given to the provisioner when the scheduler considers which provisioner to select. Higher weights indicate higher priority when comparing provisioners.