为什么无法删除我的 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 角色。


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?