본문 바로가기

Cloud

(kubernetes) - resource삭제 시 terminating 상태에서 멈춤

반응형

🍳머리말

k8s cluster의 resource들을 지울 때 종종 terminating상태에서 멈춰있는 경우가 있습니다. {}부분은 직접 입력해야하는 부분입니다.


📕 kubectl server로 curl

📔 namespace 강제 삭제

curl 명령어로 해당 finalizers를 끄는 temp json file을 작성해 namespace의 api를 호출해 해당 file을 넣음으로써 가능합니다.

(
NAMESPACE=olm
kubectl proxy &
kubectl get namespace $NAMESPACE -o json |jq '.spec = {"finalizers":[]}' >temp.json
curl -k -H "Content-Type: application/json" -X PUT --data-binary @temp.json 127.0.0.1:8001/api/v1/namespaces/$NAMESPACE/finalize
)

📕 --grace-period=0 --force

📔 pod 강제 삭제

kubectl -n {namespace명} delete pods --grace-period=0 --force {pod명}

📕Patch

📔 patch로 resource spec에 정의된 finalizers 끄기

설정된 resource 내 finalizers가 null이 아닌 경우 해당 resource 또는 이를 포함하는 상위 resource를 delete했을 때 stuck 현상이 발생합니다. file을 수정할 필요없이 patch로 원하는 field 내용을 변경할 수 있습니다.

kubectl patch {resource종류} {resource명} -p '{"metadata":{"finalizers":null}}'

 

제 경우에는 crd 삭제시 patch로 crd 내 spec들 중 finalizers를 null로 바꿔 삭제했습니다.