为什么无法删除我的 Amazon EKS 集群?

上次更新日期:2023 年 1 月 6 日

我无法删除我的 Amazon Elastic Kubernetes Service(Amazon EKS)集群。如何解决此问题?

简短描述

要删除 Amazon EKS 集群,您必须先删除与该集群关联的所有托管节点组。有关更多信息,请参阅删除 Amazon EKS 集群

注意:最佳做法是删除集群及您用于创建集群的相同工具。

重要提示:如果您使用 AWS 负载均衡器控制器(来自 GitHub 网站)创建负载均衡器,那么将为您创建应用程序负载均衡器或网络负载均衡器。如果您在删除管理负载均衡器的 Kubernetes 入口或服务之前删除了集群,则必须手动删除负载均衡器。请参阅删除应用程序负载均衡器删除网络负载均衡器删除您的负载均衡器(经典版)

若仍然无法删除您的集群组件,请根据您的实际情况,考虑在以下选项中进行选择:

  • 您会收到“The following resource(s) failed to delete”(无法删除以下资源)或“resource XXXXXXX has a dependent object”(资源 XXXXXXX 有依赖对象)等错误消息。完成删除创建集群组件的 AWS CloudFormation 堆栈部分中的步骤。
  • 您删除了集群,但节点仍处于活动状态。删除集群不会自动删除自我管理的节点。必须手动删除节点。完成删除自我管理节点部分中的步骤。
  • 您的集群停留在 DELETING 状态。确认没有丢失的 AWS 身份和访问管理 (IAM) 策略或角色阻止您的集群删除。若 IAM 角色缺失,则完成为 Amazon EKS 重新创建 IAM 服务角色部分的步骤。
  • Amazon EKS DeleteCluster API 调用失败并显示错误消息 “Cannot delete because cluster XXXXXXX currently has an update in progress.”(集群 XXXXXXX 当前正在进行更新,因此无法删除。) 但是,您会看到集群处于活动状态,而且并非正在进行更新。在这种情况下,请参阅 Complete an Amazon EKS automatic platform version upgrade(完成 Amazon EKS 平台版本自动升级)部分。

注意:删除集群需要时间,这很正常。您无需为处于 DELETING 状态的集群付费。

解决方法

注意:如果您在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请确保您运行的是最新版本的 AWS CLI

删除创建集群组件的 AWS CloudFormation 堆栈

1.    您可以删除 AWS CloudFormation 控制台上的堆栈。或者,您可以使用 AWS CLI delete-stack 命令。

如果您由于依赖关系而无法删除堆栈,首先请手动删除有依赖关系的资源或移除依赖关系。然后,再次尝试删除堆栈。

保留无法被删除的资源,请在删除堆栈时跳过资源。此选项仅适用于处于 DELETE_FAILED 状态的资源或堆栈。被跳过的资源将在账户中保持活动状态,但 CloudFormation 堆栈会被删除。然后,您可以通过 AWS 管理控制台删除资源。

2.    在删除堆栈以后,再次尝试删除您的集群。

若堆栈迟迟未被删除或无法被删除,请检查 AWS CloudTrail 中的 DeleteCluster API 调用。

删除自我管理的节点

如果您手动创建了一个 Amazon Elastic Compute Cloud(Amazon EC2)实例,那么请终止实例。如果是通过自动扩缩组创建的节点,那么请删除自动扩缩组以删除该节点。如果您使用 CloudFormation 创建节点,那么请删除堆栈以删除节点。

为 Amazon EKS 重新创建 IAM 服务角色

您必须具有 IAM 服务角色,以允许 Amazon EKS 代表您调用其他 AWS 服务。如果您在创建集群后删除或修改了角色,则集群无法删除某些资源。例如,集群可能不会删除用于与控制面板实例进行私有通信的弹性网络接口。

1.    再次创建 IAM 角色

重要提示:请务必选择 Amazon EKS 作为为您管理集群的服务。

2.    将 AmazonEKSClusterPolicy 托管的策略附加至 IAM 角色。

完成 Amazon EKS 平台版本自动升级

Amazon EKS 会自动将所有现有集群,从相应的 Kubernetes 次要版本升级到最新的 Amazon EKS 平台版本。这些升级不是由您发起的,因此不会在控制台中显示为升级。现有 Amazon EKS 平台版本的自动升级是逐步推出的,可能需要一些时间才能完成。您的集群从相应的 Kubernetes 次要版本升级到最新平台版本后,您可以重新尝试删除集群。


这篇文章对您有帮助吗?


您是否需要账单或技术帮助?