我尝试删除我的 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 网站)