From 6c1a7b84d1c101f57983606635f8d28da64ca001 Mon Sep 17 00:00:00 2001 From: Kubernetes Prow Robot Date: Wed, 12 Jul 2023 09:45:12 -0700 Subject: [PATCH] Merge pull request #5890 from Bryce-Soghigian/bsoghigian/respecting-bulk-delete fix: setting maxEmptyBulkDelete, and maxScaleDownParallelism to be the same value --- cluster-autoscaler/main.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/cluster-autoscaler/main.go b/cluster-autoscaler/main.go index 8469d05fb97d..d2da1e14a55c 100644 --- a/cluster-autoscaler/main.go +++ b/cluster-autoscaler/main.go @@ -216,6 +216,16 @@ var ( parallelDrain = flag.Bool("parallel-drain", false, "Whether to allow parallel drain of nodes.") ) +func isFlagPassed(name string) bool { + found := false + flag.Visit(func(f *flag.Flag) { + if f.Name == name { + found = true + } + }) + return found +} + func createAutoscalingOptions() config.AutoscalingOptions { minCoresTotal, maxCoresTotal, err := parseMinMaxFlag(*coresTotal) if err != nil { @@ -236,6 +246,17 @@ func createAutoscalingOptions() config.AutoscalingOptions { if *maxDrainParallelismFlag > 1 && !*parallelDrain { klog.Fatalf("Invalid configuration, could not use --max-drain-parallelism > 1 if --parallel-drain is false") } + + // in order to avoid inconsistent deletion thresholds for the legacy planner and the new actuator, the max-empty-bulk-delete, + // and max-scale-down-parallelism flags must be set to the same value. + if isFlagPassed("max-empty-bulk-delete") && !isFlagPassed("max-scale-down-parallelism") { + *maxScaleDownParallelismFlag = *maxEmptyBulkDeleteFlag + klog.Warning("The max-empty-bulk-delete flag will be deprecated in k8s version 1.29. Please use max-scale-down-parallelism instead.") + klog.Infof("Setting max-scale-down-parallelism to %d, based on the max-empty-bulk-delete value %d", *maxScaleDownParallelismFlag, *maxEmptyBulkDeleteFlag) + } else if !isFlagPassed("max-empty-bulk-delete") && isFlagPassed("max-scale-down-parallelism") { + *maxEmptyBulkDeleteFlag = *maxScaleDownParallelismFlag + } + return config.AutoscalingOptions{ NodeGroupDefaults: config.NodeGroupAutoscalingOptions{ ScaleDownUtilizationThreshold: *scaleDownUtilizationThreshold,