Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions cluster-autoscaler/config/autoscaling_options.go
Original file line number Diff line number Diff line change
Expand Up @@ -309,6 +309,8 @@ type AutoscalingOptions struct {
CheckCapacityProvisioningRequestBatchTimebox time.Duration
// ForceDeleteLongUnregisteredNodes is used to enable/disable ignoring min size constraints during removal of long unregistered nodes
ForceDeleteLongUnregisteredNodes bool
// ForceDeleteFailedNodes is used to enable/disable ignoring min size constraints during removal of failed nodes
ForceDeleteFailedNodes bool
// DynamicResourceAllocationEnabled configures whether logic for handling DRA objects is enabled.
DynamicResourceAllocationEnabled bool
}
Expand Down
11 changes: 9 additions & 2 deletions cluster-autoscaler/core/static_autoscaler.go
Original file line number Diff line number Diff line change
Expand Up @@ -866,8 +866,15 @@ func (a *StaticAutoscaler) deleteCreatedNodesWithErrors() {
nodeGroup := nodeGroups[nodeGroupId]
if nodeGroup == nil {
err = fmt.Errorf("node group %s not found", nodeGroupId)
} else if nodesToDelete, err = overrideNodesToDeleteForZeroOrMax(a.NodeGroupDefaults, nodeGroup, nodesToDelete); err == nil {
err = nodeGroup.DeleteNodes(nodesToDelete)
} else if nodesToDelete, err = overrideNodesToDeleteForZeroOrMax(a.NodeGroupDefaults, nodeGroup, nodesToDelete); err == nil && len(nodesToDelete) > 0 {
if a.ForceDeleteFailedNodes {
err = nodeGroup.ForceDeleteNodes(nodesToDelete)
if errors.Is(err, cloudprovider.ErrNotImplemented) {
err = nodeGroup.DeleteNodes(nodesToDelete)
}
} else {
err = nodeGroup.DeleteNodes(nodesToDelete)
}
}

if err != nil {
Expand Down
Loading
Loading