namespaceが消えない
sock-shopを使っていたら,不具合が起きたのでnamespaceごと削除した時,以下のエラーが出力された!
:~$ ks delete -f complete-demo.yaml
Warning: deleting cluster-scoped resources, not scoped to the provided namespace
namespace "sock-shop" deleted
deleted以降何も表示されず仕方なく中断をすると
以下のような状態になる
~/sock-shop/microservices-demo/deploy/kubernetes$ kubectl get ns
NAME STATUS AGE
default Active 38d
kube-node-lease Active 38d
kube-public Active 38d
kube-system Active 38d
prometheus Active 124m
sock-shop Terminating 93m
system-upgrade Active 38d
「monitoring」と「sock-shop」がterminatingのままになっている.
これを削除しないと新規の同じnamespaceが作成できない.
削除方法
削除方法は2通り考えられる.
- terminatingをひたすら待つ
- kubernetesの設定をいじる.
kubernetesの設定をいじる
https://www.redhat.com/sysadmin/troubleshooting-terminating-namespaces
を参考に作業を行う!
行ったコマンド
削除したいnamespceをjsonファイルに書き込む
$ kubectl get namespace ${NAMESPACE} -o json > tmp.json
エディターでtmp.jsonファイルを編集し,finalizer配列のkuberntesを削除
$ vi tmp.json
kubernetes APIサーバへのプロキシを開放する←後の作業でcurlコマンドを実行するためバックグラウンドで実行
$ kubectl proxy &
反映させるために以下のコマンドを実行
$ curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json http://127.0.0.1:8001/api/v1/namespaces/${NAMESPACE}/finalize