Skip to content
Published on

Raspberry PI 4 k3s Kubernetesでdelete namespaceが停止する場合の対処法

Authors

Overview

Raspberry PI 4 k3s Kubernetesでdelete namespaceが停止する場合の解決方法を紹介します。 Kubernetes NamespaceにはFinalizerがあり、これはリソースがhard deleteされないように保護する機能です。 例えば、実行中のNamespaceであるmonitoringkubectl delete ns monitoringのようにhard deleteしようとした場合に発生し、削除しようとしたNamespaceはTerminating状態で停止したままになります。

$ sudo kubectl get namespace
NAME                   STATUS        AGE
default                Active        2d22h
kube-system            Active        2d22h
kube-public            Active        2d22h
kube-node-lease        Active        2d22h
kubernetes-dashboard   Active        2d21h
monitoring             Terminating   6m51s

How?

NameSpace Edit

以下のコマンドでmonitoring namespaceの情報をtmp.jsonに出力します。

$ sudo kubectl get ns monitoring -o json > tmp.json

そしてtmp.jsonを開き、spec配下のfinalizersを以下のように空の配列に修正します。

"spec": {
"finalizers": []
}

apply

新しいターミナルを開いて、kubectl proxyサーバーを起動します。

$ sudo kubectl proxy

以下のcurlコマンドで修正したtmp.jsonを該当のnamespaceに適用します。

$ curl -k -H "Content-Type: application/json" -X PUT --data-binary   @tmp.json http://127.0.0.1:8001/api/v1/namespaces/monitoring/finalize

Result

以下のコマンドでnamespaceを確認すると、monitoring namespaceが正常に削除されたことを確認できます。

$ sudo kubectl get ns
NAME                   STATUS   AGE
default                Active   2d22h
kube-system            Active   2d22h
kube-public            Active   2d22h
kube-node-lease        Active   2d22h
kubernetes-dashboard   Active   2d21hgit

Reference

クイズ

Q1: 「Raspberry PI 4 k3s Kubernetesでdelete namespaceが停止する場合の対処法」の主なトピックは何ですか?

Raspberry PI 4 k3s Kubernetesでdelete namespaceが停止する場合の解決方法を紹介します。

Q2: NameSpace Editとは何ですか? 以下のコマンドでmonitoring namespaceの情報をtmp.jsonに出力します。 そしてtmp.jsonを開き、spec配下のfinalizersを以下のように空の配列に修正します。

Q3: applyの核心的な概念を説明してください。 新しいターミナルを開いて、kubectl proxyサーバーを起動します。 以下のcurlコマンドで修正したtmp.jsonを該当のnamespaceに適用します。 Result 以下のコマンドでnamespaceを確認すると、monitoring namespaceが正常に削除されたことを確認できます。 Reference https://computingforgeeks.com/how-to-force-delete-a-kubernetes-namespace/