Skip to content

Commit 2affeaf

Browse files
committed
CKS: Fix issue with scaling down CKS Nodes when deployed in HA mode
1 parent 8936e4c commit 2affeaf

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterScaleWorker.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -441,11 +441,19 @@ private void scaleDownKubernetesClusterSize() throws CloudRuntimeException {
441441
if (this.nodeIds != null) {
442442
vmList = getKubernetesClusterVMMapsForNodes(this.nodeIds).stream().filter(vm -> !vm.isExternalNode()).collect(Collectors.toList());
443443
} else {
444-
vmList = getKubernetesClusterVMMaps();
445-
vmList = vmList.stream()
444+
List<KubernetesClusterVmMapVO> workerVMsMap = getKubernetesClusterVMMaps().stream()
446445
.filter(vm -> !vm.isExternalNode() && !vm.isControlNode() && !vm.isEtcdNode())
447446
.collect(Collectors.toList());
448-
vmList = vmList.subList((int) (kubernetesCluster.getControlNodeCount() + clusterSize - 1), vmList.size());
447+
int totalWorkerNodes = workerVMsMap.size();
448+
int desiredWorkerNodes = clusterSize == null ? (int) kubernetesCluster.getNodeCount() : clusterSize.intValue();
449+
int toRemoveCount = Math.max(0, totalWorkerNodes - desiredWorkerNodes);
450+
if (toRemoveCount == 0) {
451+
logger.info("No nodes to remove from Kubernetes cluster: {}", kubernetesCluster);
452+
return;
453+
}
454+
455+
int startIndex = Math.max(0, totalWorkerNodes - toRemoveCount);
456+
vmList = new ArrayList<>(workerVMsMap.subList(startIndex, totalWorkerNodes));
449457
}
450458
Collections.reverse(vmList);
451459
removeNodesFromCluster(vmList);

0 commit comments

Comments
 (0)