Amazon Elastic Kubernetes Service (Amazon EKS) クラスターで名前空間を削除しようとしました。しかし、名前空間は「終了中」ステータスで止まっています。
簡単な説明
名前空間を削除するためには、Kubernetes はまず名前空間内のすべてのリソースを削除する必要があります。次に、登録されている API サービスのステータスを確認する必要があります。次の理由により、名前空間が「終了中」ステータスのままになります。
- Kubernetes が削除できないリソースが名前空間に含まれています。
- API サービスのステータスが「False」です。
解決方法
- 次の例のような JSON ファイルを保存します。
kubectl get namespace TERMINATING_NAMESPACE -o json > tempfile.json
**注記:**TERMINATING_NAMESPACE を固まっている名前空間の名前に置き換えてください。
- JSON ファイルの spec セクションからファイナライザー配列ブロックを削除します。
"spec": {
"finalizers": [
"kubernetes"
]
}
ファイナライザー配列ブロックを削除した後、JSON ファイルの spec セクションは次のようになります。
"spec" : {
}
- 変更を適用するために、次のコマンドを実行します。
kubectl replace --raw "/api/v1/namespaces/TERMINATING_NAMESPACE/finalize" -f ./tempfile.json
**注記:**TERMINATING_NAMESPACE を固まっている名前空間の名前に置き換えてください。
- 終了中の名前空間が削除されたことを確認します。
kubectl get namespaces
「終了中」ステータスのままになっている他の名前空間についても、これらの手順を繰り返します。
関連情報
Amazon EKSとは何ですか?
Namespaces (Kubernetes のサイト)