- Published on
Raspberry PI 4 k3s 쿠버네티스 delete namespace 가 되지 않을 때.
- Authors
- Name
Overview
Raspberry PI 4 k3s 쿠버네티스에서 delete namespace가 되지 않을 때 해결 방법을 알아본다. Kubernetes Namespace에는 Finalizer가 있고 이는 resource가 hard delete 되지 않도록 막아둔 기능이다. 예를 들어 실행중인 Namespac인 monitoring
을 kubectl delete ns monitoring
와 같이 hard하게 지우려 했을 때 발생하며, 지우려고 시도했던 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