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