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

如何从EKS节点组中移除指定的Worker节点?

EKS节点组指定移除Worker节点方案

关于eksctl scale指令的行为说明

默认情况下eksctl scale nodegroup不会优先移除已打污点、已排空的节点,它完全依赖对应节点组绑定的AWS Auto Scaling Group(ASG)的默认缩容逻辑,会随机选择符合缩容条件的实例删除,直接执行该命令无法保证删除你指定的目标节点,可能误删正常运行的业务节点。

可行的安全移除方案

方案1:标记实例不健康(通用,支持所有节点组类型)

这是最稳妥的指定移除单个节点的方式,操作步骤如下:

  • 第一步:获取目标EC2实例ID、对应节点组绑定的ASG名称,可通过以下命令查询ASG名:
    aws eks describe-nodegroup --cluster-name prod --nodegroup-name worker --query "nodegroup.resources.autoScalingGroups[*].name" --output text
  • 第二步:将目标实例标记为ASG不健康状态,执行CLI命令如下:
    aws autoscaling set-instance-health --instance-id <目标实例ID> --health-status Unhealthy --no-should-respect-grace-period
  • 第三步:等待ASG自动终止该不健康实例(通常1-3分钟),确认实例销毁后,执行scale命令同步eksctl配置,避免配置漂移:
    eksctl scale nodegroup --cluster=prod --nodes=8 --name=worker

方案2:托管节点组专用指令(仅适用于EKS托管节点组)

如果你使用的是EKS官方托管节点组,可直接调用EKS原生接口移除指定实例,无需手动操作ASG:

  • 执行以下命令,接口会自动完成节点排空、实例移出ASG、销毁、调整节点组期望数的全流程:
    aws eks update-nodegroup-config --cluster-name prod --nodegroup-name worker --remove-route '{"instanceIds": ["<目标实例ID>"]}'

注意事项

  • 所有操作前请确认已经完成目标节点的Pod排空,执行命令为kubectl drain <节点名> --ignore-daemonsets,避免业务Pod被强制终止引发故障。
  • 如果担心ASG在替换实例过程中启动多余节点,可先在ASG控制台临时将最小、期望、最大实例数调整为目标值,操作完成后再用eksctl同步配置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:39:03