Cluster Autoscaler非预期缩容 scale-down-enabled设为false时如何禁止缩容
Cluster Autoscaler配置scale-down-enabled=false后仍出现非预期缩容的排查配置项
- 首先确认全局缩容开关参数是否真的生效
执行命令kubectl get deploy <你的Cluster Autoscaler部署名> -n kube-system -o yaml,检查spec.template.spec.containers[0].args字段中是否正确添加了--scale-down-enabled=false配置,避免出现配置写错命名空间、写错部署对象、参数格式错误的问题。也可以查看CA运行日志,搜索scale-down-enabled关键词确认运行时加载的配置值确实为false。 - 排查集群内其他会触发节点删除的组件
以下组件的缩容行为独立于Cluster Autoscaler,需要单独关闭对应功能:- 云厂商侧的自动伸缩组(ASG、ECS弹性伸缩组等)的健康检查替换、自动缩容策略,云厂商托管K8s服务(EKS/GKE/ACK等)平台侧自带的节点自动伸缩开关
- 集群内同时部署的其他弹性组件,比如Karpenter、自定义节点回收脚本
- K8s原生的节点压力驱逐、污点驱逐规则,节点操作系统自动更新、集群分发的节点自动升级任务
- 检查Cluster Autoscaler的特殊强制缩容参数
全局缩容开关仅关闭常规闲置节点缩容逻辑,以下特殊场景的缩容逻辑仍会独立触发,需要针对性调整:--max-node-provision-time参数:节点创建超过该阈值仍未就绪时,CA会主动删除该节点,如果不需要该逻辑可以将参数值调至足够大的时长- 旧版本CA已知Bug:1.21及之前的部分小版本Cluster Autoscaler存在
--scale-down-enabled参数不生效的问题,建议升级到和你集群K8s版本匹配的最新CA稳定版
- 配置兜底缩容防护规则
如果需要彻底禁止所有节点被CA缩容,可以给所有节点添加Annotationcluster-autoscaler.kubernetes.io/scale-down-disabled: "true",该注解的优先级高于全局缩容开关,添加后CA绝对不会触发对应节点的缩容删除。
内容的提问来源于stack exchange,提问作者Devopsnoob
相关产品推荐
相关产品推荐

