home..
Kubernetes Namespace 강제로 삭제하기
mont kim / January 2023
kubernetes
moonwalk
namespace
delte namespace
namespace 삭제
강제삭제
NS 강제삭제
kubernetes에서 namespace를 삭제해도 terminating 상태에서 삭제되지않을때
finalizer가 제대로 처리되지 않아 리소스가 영원히 삭제되지 않는 ‘고아 리소스’ 상황이 발생할 수 있습니다. 이런 경우에 finalizer를 수동으로 제거할 수 있습니다
namespace의 경우 이야기가 조금 다릅니다.
일반적으로 네임스페이스의 “metadata.finalizers”를 변경하려고 하면 “metadata.finalizers: Forbidden: updates to finalizers are via delete collection or update api”라는 메시지와 함께 변경이 거부됩니다.
쿠버네티스에서 네임스페이스의 삭제를 안전하게 관리하기 위한 설계로, 네임스페이스의 finalizer는 특별한 API를 통해만 수정할 수 있습니다. 이 API는 ‘/api/v1/namespaces/
즉, 일반적인 ‘kubectl edit’ 명령을 사용하면 네임스페이스의 finalizer를 수정할 수 없으며, 위에서 제공된 명령을 사용해야만 finalizer를 제거하고 네임스페이스를 즉시 삭제할 수 있습니다.
kubectl get namespace "<NS>" -o json \
| tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/" \
| kubectl replace --raw /api/v1/namespaces/<NS>/finalize -f -
<NS>
부분을 원하는 Namespace로 수정후 해당 명령어를 실행합니다.