This is an automated email from the ASF dual-hosted git repository. pearl11594 pushed a commit to branch ghi12229-cks-scaledown-ha in repository https://gitbox.apache.org/repos/asf/cloudstack.git
commit 2affeaf8b89a9e3c5cfe0fde3dfce214e7291e8c Author: Pearl Dsilva <[email protected]> AuthorDate: Thu Dec 18 19:09:30 2025 -0500 CKS: Fix issue with scaling down CKS Nodes when deployed in HA mode --- .../actionworkers/KubernetesClusterScaleWorker.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterScaleWorker.java b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterScaleWorker.java index dba858ed809..5bd8da46370 100644 --- a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterScaleWorker.java +++ b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterScaleWorker.java @@ -441,11 +441,19 @@ public class KubernetesClusterScaleWorker extends KubernetesClusterResourceModif if (this.nodeIds != null) { vmList = getKubernetesClusterVMMapsForNodes(this.nodeIds).stream().filter(vm -> !vm.isExternalNode()).collect(Collectors.toList()); } else { - vmList = getKubernetesClusterVMMaps(); - vmList = vmList.stream() + List<KubernetesClusterVmMapVO> workerVMsMap = getKubernetesClusterVMMaps().stream() .filter(vm -> !vm.isExternalNode() && !vm.isControlNode() && !vm.isEtcdNode()) .collect(Collectors.toList()); - vmList = vmList.subList((int) (kubernetesCluster.getControlNodeCount() + clusterSize - 1), vmList.size()); + int totalWorkerNodes = workerVMsMap.size(); + int desiredWorkerNodes = clusterSize == null ? (int) kubernetesCluster.getNodeCount() : clusterSize.intValue(); + int toRemoveCount = Math.max(0, totalWorkerNodes - desiredWorkerNodes); + if (toRemoveCount == 0) { + logger.info("No nodes to remove from Kubernetes cluster: {}", kubernetesCluster); + return; + } + + int startIndex = Math.max(0, totalWorkerNodes - toRemoveCount); + vmList = new ArrayList<>(workerVMsMap.subList(startIndex, totalWorkerNodes)); } Collections.reverse(vmList); removeNodesFromCluster(vmList);
