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);

Reply via email to