OpenShiftでProjectとPodがTerminatingで消えない時の対処法

リソース不足が原因で、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が削除されます。

以上です!