home..

Kubernetes Namespace 강제로 삭제하기

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//finalize'입니다. 이를 사용하면 네임스페이스의 finalizer를 직접 수정할 수 있습니다.

즉, 일반적인 ‘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로 수정후 해당 명령어를 실행합니다.

© 2024 mont kim   •  Powered by Soopr   •  Theme  Moonwalk