Node Consolidation Configuration
Node consolidation settings and schedule can be defined in Helm values and deployed via GitOps.
Helm-defined settings and schedule can be edited via the product. On Helm upgrade, only the relevant changes will be applied.
Configuration Available in v1.27.12+
nodeConsolidation:
enabled: true
settings:
general:
enableScaleDownNodesWithGpu: true
enableScaleDownNodesWithUnevictablePods: true
karpenter:
enableScaleDownUnderutilizedNodes: true
enableScaleDownClusterAutoScalerNodes: true
clusterAutoScaler:
enableOverrideNodePoolMinCount: true
enableScaleDownNodesWithLocalStorage: true
enableScaleDownNodesWithKubeSystemPods: true
enableReplaceNodesWithBetterInstanceTypes: true
schedule:
recurrences:
- days: [1, 3, 5] # Monday, Wednesday, Friday
times: ["02:00"] # 2 AM UTCFields
nodeConsolidation.enabled
Must be true to apply the Helm-defined configuration.
nodeConsolidation.settings
Optional object with three sub-objects: general, karpenter, and clusterAutoScaler. Omitted keys are not applied.
settings.general - Relevant for both Karpenter and Cluster Autoscaler managed clusters
| Key | Description |
|---|---|
enableScaleDownNodesWithGpu | When true, allow scaling down nodes with GPU. |
enableScaleDownNodesWithUnevictablePods | When true, allow scaling down nodes with unevictable pods. |
settings.karpenter
| Key | Description |
|---|---|
enableScaleDownUnderutilizedNodes | When true, allow force-deleting Karpenter underutilized nodes (scale down beyond Karpenter’s default constraints). |
enableScaleDownClusterAutoScalerNodes | When true, allow Cluster Autoscaler-managed nodes to participate in consolidation on mixed Karpenter + CAS clusters. |
settings.clusterAutoScaler
| Key | Description |
|---|---|
enableOverrideNodePoolMinCount | When true, allow scaling down nodes from node pools at minimum size. |
enableScaleDownNodesWithLocalStorage | When true, allow scaling down nodes with local storage. |
enableScaleDownNodesWithKubeSystemPods | When true, allow scaling down nodes with kube-system pods. |
enableReplaceNodesWithBetterInstanceTypes | When true, replace nodes with better (smaller/cheaper) instance types during consolidation. |
nodeConsolidation.schedule
Optional object with a recurrences array. Each recurrence defines when consolidation runs automatically.
Schedule format:
recurrences: Array of{ days: number[], times: string[] }days: Weekday numbers (0 = Sunday, 1 = Monday, …, 6 = Saturday)times: Array of"HH:MM"strings in UTC (24-hour format)
Example: run consolidation on Mon, Wed, Fri at 2:00 and 14:00 UTC:
schedule:
recurrences:
- days: [1, 3, 5]
times: ["02:00", "14:00"]