我嘗試刪除 Amazon Elastic Kubernetes Service (Amazon EKS) 叢集中的命名空間。但是,命名空間停留在「正在終止」狀態。
簡短描述
若要刪除命名空間,Kubernetes 必須先刪除命名空間中的所有資源。然後,它必須檢查已註冊之 API 服務的狀態。由於以下原因,命名空間停留在「終止」狀態:
- 命名空間包含 Kubernetes 無法刪除的資源。
- API 服務的狀態為「False」。
解決方案
按照以下説明刪除停留在「正在終止」狀態的命名空間。
1. 儲存類似以下內容的 JSON 檔案:
kubectl get namespace <terminating-namespace> -o json > tempfile.json
2. 從 JSON 檔案的規格表部分中刪除完成項陣列區塊。以下是 JSON 檔案規格表部分的範例,此檔案包含要刪除的完成項陣列區塊:
"spec": {
"finalizers": [
"kubernetes"
]
}
刪除完成項陣列區塊後,JSON 檔案的規格表部分如下所示:
"spec" : {
}
3. 若要套用更改,請執行類似以下的命令:
kubectl replace --raw "/api/v1/namespaces/<terminating-namespace>/finalize" -f ./tempfile.json
4. 確認已將正在終止的命名空間移除:
kubectl get namespaces
對其餘停留在「正在終止」狀態的命名空間重複這些步驟。
相關資訊
什麼是 Amazon EKS?
Kubernetes