Azure Kubernetes Service(AKS)节点池调整大小后集群不生效如何处理
AKS节点池替换后集群仍维持原节点数量的解决方案
触发原因
- 未提前将新节点池设置为系统节点池,AKS要求集群最少存在1个激活的系统节点池,删除原有系统节点池后,控制平面会自动尝试恢复原系统节点池的容量
- 集群自动扩缩容(Cluster Autoscaler)的最小/最大节点数边界未更新,仍沿用旧节点池的配置触发扩容
- 存量Pod存在节点亲和性、污点容忍等配置,无法调度到新节点池的节点上,集群为了运行Pending状态的Pod自动扩容
操作步骤
- 确认新节点池的角色配置
将新节点池切换为系统节点池,避免集群触发系统节点容量恢复逻辑:
az aks nodepool update --resource-group <你的资源组名称> --cluster-name <AKS集群名称> --name <新节点池名称> --mode System
- 更新节点池的伸缩配置
- 如果不需要自动扩缩容,直接手动指定节点池的期望节点数:
az aks nodepool scale --resource-group <你的资源组名称> --cluster-name <AKS集群名称> --name <新节点池名称> --node-count <目标节点数> - 如果需要开启自动扩缩容,更新伸缩阈值为你预期的范围:
az aks nodepool update --resource-group <你的资源组名称> --cluster-name <AKS集群名称> --name <新节点池名称> --enable-cluster-autoscaler --min-count <最小节点数> --max-count <最大节点数>
- 清理旧节点残留并检查Pod调度状态
- 执行
kubectl get nodes确认是否存在旧节点池的残留节点记录,如有执行kubectl delete node <旧节点名称>清理etcd中的残留数据 - 执行
kubectl get pods -A | grep Pending查看是否存在未调度的Pod,若存在执行kubectl describe pod <Pod名称> -n <命名空间>查看调度失败原因:- 若为节点亲和性/污点不匹配,修改对应Deployment/StatefulSet的调度规则适配新节点池
- 若为节点资源不足,可调整新节点池的VM规格,或在新建节点池时添加
--max-pods <数值>参数调大单节点可承载的Pod数量(Azure CNI模式下默认单节点最多30个Pod,最高可调整到250,大幅节省VNet IP占用)
- 验证配置生效
执行az aks nodepool show --resource-group <你的资源组名称> --cluster-name <AKS集群名称> --name <新节点池名称> --query "count"确认返回的节点数和你的预期一致,等待10分钟左右观察集群是否再自动扩容额外节点。
内容的提问来源于stack exchange,提问作者rsh
相关产品推荐
相关产品推荐

