删除EKS集群失败求助:无法删除孤立ELB安全组
解决EKS集群删除失败(ELB安全组依赖导致的DependencyViolation问题)
我完全理解你现在的焦虑——折腾两天删不掉EKS集群还每天产生高额费用,简直糟心。针对你遇到的ELB安全组依赖问题,我整理了一套一步步的排查解决流程,你可以跟着试试:
1. 精准定位安全组的依赖对象
AWS的报错有时候不会直接点明依赖资源,你可以用AWS CLI命令深挖sg-0ac89a5984f250d5b的关联情况:
- 查看安全组的出入站规则关联:
aws ec2 describe-security-groups --group-ids sg-0ac89a5984f250d5b --query 'SecurityGroups[0].IpPermissionsEgress' aws ec2 describe-security-groups --group-ids sg-0ac89a5984f250d5b --query 'SecurityGroups[0].IpPermissions'
- 查看绑定到该安全组的网络接口(ENIs):
aws ec2 describe-network-interfaces --filters "Name=group-id,Values=sg-0ac89a5984f250d5b"
从返回结果里找关联的资源,比如遗留的ECS实例、RDS、负载均衡器或者VPC端点,这些就是你需要先清理的目标。
2. 清理EKS集群的核心遗留资源
先把EKS相关的节点和控制平面残留资源清掉:
- 先删除所有节点组(如果有的话):
aws eks delete-nodegroup --cluster-name <你的集群名称> --nodegroup-name <节点组名称>
- 去CloudFormation控制台找到EKS集群对应的堆栈(通常命名是
eksctl-<集群名>-cluster),尝试删除堆栈。如果堆栈删除失败,查看失败详情里的具体资源,手动删掉这些资源后再重试删除堆栈。
3. 解决ENI“已在使用中”的问题
如果查出来的ENIs没法删除,提示“已在使用中”,可以这么处理:
- 检查ENIs是否绑定了弹性IP(EIP),如果有先解绑:
aws ec2 disassociate-address --association-id <EIP的关联ID>
- 如果ENIs关联的实例已经终止但还没释放ENI,强制分离ENI:
aws ec2 detach-network-interface --attachment-id <ENI的附件ID> --force
分离成功后再删除ENI:
aws ec2 delete-network-interface --network-interface-id <ENI的ID>
4. 手动删除报错的ELB安全组
当所有依赖资源都清理完毕后,尝试手动删除那个报错的安全组:
aws ec2 delete-security-group --group-id sg-0ac89a5984f250d5b
如果还是失败,再检查一遍是否有遗留的ALB/NLB还在使用这个安全组——有时候负载均衡器可能没被集群删除脚本清理到,需要你手动去EC2控制台的负载均衡器页面找到并删除。
5. 最后重试删除EKS集群
完成以上所有步骤后,回到EKS控制台或者用CLI重试删除集群:
aws eks delete-cluster --name <你的集群名称>
如果以上步骤都没能解决问题,建议你直接联系AWS支持,把报错里的request id(ce0efc48-14cd-4cba-ae2c-98467c3bde20)提供给他们,他们可以从后台层面帮你排查那些控制台看不到的深层依赖,毕竟这种遗留资源的问题有时候确实比较隐蔽。
内容的提问来源于stack exchange,提问作者Wasif Ibrahim
相关产品推荐
相关产品推荐

