You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AKS使用Kured升级节点时出现Failed to drain the node缩容失败错误

问题根因归类

1. 节点驱逐流程被阻断(直接对应报错failed to drain the node)

  • 存在Pod中断预算(PDB)限制:部分有状态应用(如数据库、消息队列)的PDB设置过于严格,允许的中断数为0,导致集群无法驱逐该节点上的对应Pod,drain流程直接终止。
  • 节点上存在绑定本地存储的Pod:使用emptyDir、本地持久卷(Local PV)的Pod默认会阻止节点驱逐,除非drain操作主动添加--force参数,集群自动扩缩容默认不会添加该强制参数。
  • DaemonSet Pod未配置缩容容忍规则:AKS集群自动扩缩容默认不会驱逐DaemonSet管理的Pod,若该临时节点上运行了未添加cluster-autoscaler.kubernetes.io/enable-ds-eviction: "true"注解的DaemonSet Pod,会直接导致drain失败。
  • kube-system命名空间下存在未受保护的关键Pod:未配置PDB的系统级自定义Pod会被集群自动扩缩容判定为不可驱逐,阻止drain流程。

2. Kured与AKS集群组件流程冲突

  • 原节点重启后未成功回归集群:原节点安装内核补丁后重启,出现kubelet启动失败、内核panic、网络配置异常等问题,无法重新注册到AKS集群,导致集群始终无法将原节点恢复为就绪状态,自动扩缩容判定临时节点仍需保留,且无法将其驱逐缩容,最终原节点被集群判定为不健康剔除,仅留下运行旧内核版本的临时节点。
  • Kured与集群自动扩缩容时序冲突:Kured触发节点重启的时机与AKS默认节点升级、自动扩缩容的调度逻辑重叠,导致临时节点创建后,原节点的uncordon操作未被正常执行,缩容流程提前触发出现异常。

3. 集群自动扩缩容配置异常

  • 临时节点被添加了缩容禁止注解:若节点被手动/自动添加了cluster-autoscaler.kubernetes.io/scale-down-disabled: "true"注解,会直接阻止缩容流程。
  • 缩容drain超时设置过短:集群自动扩缩容默认的drain超时时间不足以完成所有Pod的优雅终止,触发超时报错后直接终止缩容流程。

快速排查命令

# 查看问题节点上运行的所有Pod,定位不可驱逐的工作负载
kubectl get pods -A -o wide --field-selector spec.nodeName=<替换为问题节点名称>

# 检查所有命名空间下的PDB配置,确认是否存在允许中断数为0的规则
kubectl get pdb -A

# 查看集群自动扩缩容日志,获取drain失败的具体报错细节
kubectl logs -n kube-system deployment/cluster-autoscaler | grep <替换为问题节点名称>

内容的提问来源于stack exchange,提问作者themochishifter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:54:03