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

AWS EKS NodeGroup卡在删除状态,Terraform部署遇多异常

EKS NodeGroup删除卡住、配置不符问题排查与解决

一、核心问题梳理

  • EKS托管节点组(private-nodes)长期处于删除状态,健康检查提示IAM角色不存在;重建角色后执行UpdateNodegroupVersion报错:ResourceInUseException: Nodegroup cannot be updated as it is currently not in Active State
  • CLI与Terraform均无法删除集群及节点组
  • Terraform配置节点组为SPOT类型t3.medium,但实际存在按需类型t3.large实例,代码无对应配置

二、NodeGroup删除卡住问题解决步骤

1. 确认节点组当前状态

执行命令查看节点组详细状态与错误信息:

aws eks describe-nodegroup --cluster-name eks-gd360 --nodegroup-name private-nodes --region eu-west-1

重点关注status(如DELETING/DELETE_FAILED)与statusReason字段,定位具体失败原因。

2. 手动清理关联资源

如果节点组删除卡住,可手动清理其依赖资源:

  • 终止关联EC2实例:在EC2控制台找到节点组对应的实例(标签包含eks:nodegroup-name=private-nodes),手动终止
  • 删除对应Auto Scaling Group(ASG):在EC2控制台的Auto Scaling组中,找到名称包含private-nodes的ASG,先设置最小/最大/期望实例数为0,再删除ASG
  • 清理残留网络资源:检查节点组关联的安全组、负载均衡等资源,确认无业务依赖后手动删除

3. 修复IAM角色匹配问题

重建的IAM角色必须与节点组绑定的ARN完全一致:

  • 确保角色名称与原角色完全相同,避免ARN变更导致节点组无法识别
  • 验证角色的信任关系,确保包含以下服务主体:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": ["ec2.amazonaws.com", "eks.amazonaws.com"]
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    
  • 重新附加所需权限策略:AmazonEKSWorkerNodePolicy、AmazonEKS_CNI_Policy、AmazonEC2ContainerRegistryReadOnly

4. 强制清理节点组(极端情况)

若上述步骤无效,可通过AWS Support提交工单,请求使用官方资源清理工具强制删除卡住的节点组;或通过AWS CLI调用底层API(需谨慎操作,避免误删其他资源)。

三、Terraform配置与实际实例不符问题排查

1. 区分托管节点组与Karpenter节点

你使用了Karpenter模块,t3.large按需实例大概率是Karpenter自动创建的,而非Terraform定义的托管节点组:

  • 执行kubectl get nodes,查看节点标签,Karpenter管理的节点通常带有karpenter.sh/provisioner-name标签
  • 检查Karpenter的Provisioner配置,确认是否有指定t3.large实例类型与按需容量类型

2. 检查Terraform状态漂移

执行命令查看Terraform状态中节点组的实际配置:

terraform state show aws_eks_node_group.private-nodes

对比输出与本地代码,若状态与代码不一致,说明存在状态漂移,可通过terraform import重新同步资源,或手动修正状态文件(需谨慎)。

3. 核对模块内部配置

检查eks模块与karpenter模块的内部代码,确认是否存在额外的节点组配置或Provisioner定义,导致创建了t3.large实例。

四、Terraform无法删除集群问题解决

  1. 刷新Terraform状态:
terraform refresh

确保Terraform状态与AWS实际资源一致。

  1. 移除无效状态资源:
    若节点组在AWS中已不存在,但Terraform状态仍有记录,执行以下命令移除:
terraform state rm aws_eks_node_group.private-nodes
  1. 清理集群关联资源:
    删除集群前,需先清理所有关联资源:
  • 删除EKS Add-ons(如kube-proxy、coredns、vpc-cni)
  • 清理集群关联的负载均衡、存储卷、IAM角色等资源
  • 最后再尝试通过Terraform或CLI删除集群

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 16:01:12