You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by pe...@apache.org on 2025/12/19 00:09:50 UTC

(cloudstack) 01/01: CKS: Fix issue with scaling down CKS Nodes when deployed in HA mode

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 <pe...@gmail.com>
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);