为什么无法删除我的 Amazon EKS 集群?
上次更新时间:2020 年 2 月 20 日
我无法删除我的 Amazon Elastic Kubernetes Service (Amazon EKS) 集群。或者,我删除了我的 Amazon EKS 集群,但仍然看到工作线程节点被创建。
简短描述
要完全删除 Amazon EKS,您必须删除 Amazon EKS 控制层面和数据层面,或删除工作线程节点。如需更多信息,见删除集群。
注意:最佳做法是删除集群及您用于创建集群的相同工具。
重要提示:删除 Kubernetes 服务和入口资源将从账户移除负载均衡器。如果在 AWS 管理控制台中创建您的负载均衡器,则您必须手动删除该负载均衡器,或删除 Kubernetes 中的服务。
若仍然无法删除您的集群组件,考虑根据您的实际情况在以下选项中进行选择:
- 如果在尝试删除您的集群时收到错误消息:"The following resource(s) failed to delete" 或 "resource XXXXXXX has a dependent object",则完成删除创建集群组件的 AWS CloudFormation 堆栈部分中的步骤。
- 若删除您的集群,而节点依然处于活动状态,则完成删除用于创建您的工作线程节点的 Auto Scaling 组部分的步骤。此问题由与集群关联,并作为 AWS CloudFormation 堆栈一部分的非托管工作线程节点所导致。
- 如果您的集群长时间被卡在 DELETING 状态,确认没有 AWS Identity and Access Management (IAM) 策略缺失,或者没有角色在阻止您删除集群。若 IAM 角色缺失,则完成为 Amazon EKS 重新创建 IAM 服务角色部分的步骤。
注意:删除集群可能花费较长时间,这是正常的情况。您无需为处于 DELETING 状态的集群付费。
解决方法
删除创建集群组件的 AWS CloudFormation 堆栈
1. 如果您由于依赖关系而无法删除堆栈,则手动删除有依赖关系的资源或移除依赖关系。然后,再次尝试删除堆栈。
如果您要保留无法被删除的资源,则在删除堆栈时跳过资源。此选项仅适用于处于 DELETE_FAILED 状态的资源或堆栈。
被跳过的资源将在账户中保持活动状态,但 AWS CloudFormation 堆栈会被成功删除。然后,您可以通过 AWS 管理控制台删除资源。
2. 在删除堆栈以后,再次尝试删除您的堆栈。
若堆栈迟迟未被删除或无法被删除,检查 AWS CloudTrail 中的 DeleteCluster API 调用。
删除用于创建您的工作线程节点的 Auto Scaling 组
1. 删除返回错误的 AWS CloudFormation 工作线程节点的堆栈。这样做将删除作为该堆栈一部分被创建的 Auto Scaling 组。
注意:要查找实例创建时所在堆栈的名称,在此表中搜索该实例的标记:aws: cloudformation: stack-name。
2. 验证 Auto Scaling 组被删除。
若 Auto Scaling 组依然存在,则删除 Auto Scaling 组。
为 Amazon EKS 重新创建 IAM 服务角色
您必须具有 IAM 服务角色,以允许 Amazon EKS 为您调用其他 AWS 服务。如果您在创建集群后删除或修改角色,则集群将无法删除部分资源(如,负载均衡器或弹性网络接口等)。
1. 再次创建 IAM 角色。
重要提示:确保选择 Amazon EKS 作为为您管理集群的服务。
2. 将 AmazonEKSServicePolicy and AmazonEKSClusterPolicy 托管策略附加到 IAM 角色。