如何解决 Amazon EKS 集群中的命名空间处于已终止状态的问题?

1 分钟阅读
0

我尝试删除我的 Amazon Elastic Kubernetes Service (Amazon EKS) 集群中的命名空间。但是,该命名空间卡在“Terminating”(正在终止)状态。

简短描述

要删除命名空间,Kubernetes 必须先删除该命名空间中的所有资源。然后,Kubernetes 必须检查注册的 API 服务的状态。命名空间卡在 Terminating(正在终止)状态的原因包括:

  • 命名空间包含 Kubernetes 无法删除的资源。
  • API 服务的状态为 False

解决方法

1.    保存 JSON 文件,如以下示例所示:

kubectl get namespace TERMINATING_NAMESPACE -o json > tempfile.json

注意:请TERMINATING_NAMESPACE 替换为卡滞的命名空间的名称。

2.    从 JSON 文件的 spec 部分删除终结器数组块:

"spec": {
        "finalizers": [
            "kubernetes"
        ]
    }

删除终结器数组块后,JSON 文件的 spec 部分可能如下所示:

"spec" : {
    }

3.    要应用更改,请运行以下命令:

kubectl replace --raw "/api/v1/namespaces/TERMINATING_NAMESPACE/finalize" -f ./tempfile.json

注意:请TERMINATING_NAMESPACE 替换为卡滞的命名空间的名称。

4.    验证是否已经删除了正在终止的命名空间:

kubectl get namespaces

对卡滞在 Terminating(正在终止)状态的其他所有命名空间重复上述步骤。

相关信息

什么是 Amazon EKS?

命名空间(请见 Kubernetes 网站)

AWS 官方
AWS 官方已更新 2 年前