종료 상태에서 멈춘 Kubernetes 네임스페이스를 삭제하는 방법

다음과 같은 명령을 실행한 후

kubectl delete my-namespace


삭제 요청을 수락한 후 명령이 무기한 중단되며 Terminating에 앉아 있는 것을 볼 수 있습니다.

$ kubectl get ns/my-namespace
NAME      STATUS         AGE
testing   Terminating    113m


이는 사양의 Finalizer, 삭제 중에 충족해야 하는 특정 조건 때문일 수 있습니다. 네임스페이스의 종료자를 볼 수 있습니다.

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


이것은 다른 조건이 없는 표준 네임스페이스가 그렇지 않은 경우의 모습이므로 중단된 경우 이 방법일 가능성이 높습니다.
kubectl edit ns/my-namespace 를 사용하여 리소스를 수정하고 종료자를 빈 배열로 바꿀 수 있습니다.

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


또는 Kube API를 사용하여 사양을 업데이트하여 리소스를 덤프하여 성공하지 못한 경우 수동으로 완료할 수 있도록 합니다.

kubectl get ns/my-namespace -o json > my-namespace.json


종료자를 제거하도록 편집my-namespace.json한 다음 API에 요청PUT을 수행합니다.

kubectl replace --raw "/api/v1/namespaces/my-namespace/finalize" -f ./my-namespace.json


또는 HTTP 클라이언트를 사용하여 동일한 json 덤프를 사용하여 요청을 발행합니다( kubectl proxy 을 통해 노출하지 않는 경우 일반적으로 인증이 필요함).

curl -k -H "Content-Type: application/json" -X PUT --data-binary @my-namespace.json "https://<Kube API Endpoint>/api/v1/namespaces/my-namespace/finalize"


성공적인 응답을 받으면 네임스페이스가 삭제되었음을 확인할 수 있습니다.

kubectl get ns/my-namespace


리소스를 반환하지 않아야 합니다.

좋은 웹페이지 즐겨찾기