재형이의 성장통 일지
  • delete resource 시 terminating에서 stuck 상태 해결 방법
    2024년 09월 09일 11시 24분 00초에 업로드 된 글입니다.
    작성자: 재형이
    반응형

    Kubernetes에서 네임스페이스가 "Terminating" 상태에서 멈춰 삭제되지 않을 때는 주로 파이널라이저(finalizer)가 네임스페이스 삭제를 완료하지 못하는 상황이 원인이 됩니다. 

     

     

    1. 네임스페이스 상태 확인:
      네임스페이스가 삭제되지 않고 Terminating 상태에 멈춰 있는지 확인합니다.
      kubectl get namespaces <namespace-name> -o yaml


    2. JSON 파일로 네임스페이스 추출:
      kubectl 명령어를 사용해 네임스페이스 정의를 JSON 형식으로 추출합니다.
      kubectl get namespaces <namespace-name> -o json > <namespace-name>.json


    3. 파이널라이저 제거:
      JSON 파일에서 finalizers 항목에 있는 "kubernetes" 값을 삭제합니다. 이 작업은 다음과 같이 sed 명령어로 수행할 수 있습니다:
      sed -i '/"kubernetes"/d' <namespace-name>.json


    4. kubectl proxy 실행:
      Kubernetes API 서버에 액세스하기 위해 kubectl proxy를 새로운 터미널에서 실행합니다:
      kubectl proxy


    5. API 요청으로 네임스페이스 삭제 완료:
      수정된 JSON 파일을 사용해 네임스페이스 삭제를 강제 종료합니다.
      curl -k -H "Content-Type: application/json" -X PUT --data-binary @<namespace-name>.json <http://127.0.0.1:8001/api/v1/namespaces/<namespace-name>>/finalize


    6. 네임스페이스 상태 확인:
      마지막으로 네임스페이스가 정상적으로 삭제되었는지 확인합니다:
      kubectl get ns


    이 절차를 따르면, 네임스페이스가 정상적으로 삭제되고 Terminating 상태에서 벗어날 수 있습니다.

    반응형
    댓글