リソース不足が原因で、oc deleteを実行してもPodとProjectがTerminatingの状態で消えないことがありました。その時に解消したコマンドを記録します。
PodがTerminating状態で消えない時
PodがTerminatingで消えなかった時、以下のコマンドで解消しました。
$ oc delete pod [Pod名] -n [namespace名] --grace-period=0 --force
--grace-period
は、Podを正常に終了させるための期間を指定します。ここでは0を指定して、即座に終了するよう指定しています。
ProjectがTeminating状態で消えない時
PerojectがTerminatingで消えなかった時、以下の手順で解消しました。
1. Projectのマニフェストを取得する
$ oc get namespace [Project名] -o json > temp.json
2. マニフェストを編集する
取得したtemp.jsonを編集して、spec.finalizers.kubernetesの行を削除します。
"spec": { "finalizers": [ "kubernetes" ← この行を削除 ] },
3. プロキシを起動する
$ oc proxy &
4. 編集したマニフェストを反映する
以下のコマンドで、編集したtemp.jsonファイルをOpenShift APIに送信します。
$ curl -H "Content-Type: application/json" -X PUT --data-binary @temp.json http://127.0.0.1:8001/api/v1/namespaces/[Project名]/finalize
このコマンドが正常に完了すると、STATUSがTerminatingだったProjectが削除されます。
以上です!