다음을 통해 공유


종결 상태에서 중단된 Pod 및 네임스페이스 문제 해결

이 문서에서는 Pod 및 네임스페이스가 상태에 남아 있는 AKS(Microsoft Azure Kubernetes Service)의 시나리오에 대한 문제 해결 전략에 대해 Terminating 설명합니다.

필수 조건

문제 해결 검사 목록

1단계: 삭제할 Pod 결정

제거해야 하는 Pod의 이름과 Pod가 속한 네임스페이스를 확인합니다. AKS 클러스터에서 실행 중인 Pod와 Pod가 작동하는 네임스페이스를 확인하려면 다음 kubectl get 명령을 실행합니다.

kubectl get pod --all-namespaces

2단계: Pod 삭제

1단계의 정보를 사용하여 다음 kubectl delete 명령을 실행하여 Pod를 삭제합니다.

kubectl delete <pod-name> --namespace <namespace-name>

참고 항목

지정된 Pod가 --namespace <namespace-name> "기본" 네임스페이스에 속하는 경우 매개 변수를 생략할 수 있습니다.

다음 오류 메시지가 표시되면 Pod 이름과 네임스페이스 이름이 올바른지 확인합니다.

서버 오류(NotFound): Pod "<POD NAME>"을 찾을 수 없음

Pod 및 네임스페이스 이름이 올바르지만 Pod가 삭제되지 않은 경우 Pod를 강제로 삭제할 수 있습니다. 이렇게 하려면 다음 명령을 실행합니다 kubectl delete .

kubectl delete pod <pod-name> --namespace <namespace-name> --grace-period=0 --force --wait=false

3단계: 삭제할 네임스페이스 결정

제거해야 하는 네임스페이스의 이름을 확인합니다. AKS 클러스터에서 실행 중인 네임스페이스를 확인하려면 다음 kubectl get 명령을 실행합니다.

kubectl get namespace

4단계: 네임스페이스 내에서 리소스 찾기

네임스페이스가 상태에 고정 Terminating 된 경우 네임스페이스 내에 정의된 모든 리소스를 찾습니다. 이렇게 하려면 다음 명령을 실행합니다 kubectl get .

kubectl get all --namespace <namespace-name>

5단계: 네임스페이스 내의 리소스 삭제

네임스페이스 내에서 정의된 리소스를 검색한 후 해당 리소스를 삭제합니다. 삭제할 각 리소스에 대해 다음 kubectl delete 명령을 실행합니다.

kubectl delete <resource> <resource name> --namespace <namespace-name> --grace-period=0 --force --wait=false

예를 들어 네임스페이스 내에서 Pod를 nginx 삭제 nginxtest 하려면 다음 명령을 실행합니다.

kubectl delete pod nginxtest --namespace nginx --grace-period=0 --force --wait=false

6단계: 네임스페이스 삭제

네임스페이스 내의 모든 리소스를 삭제한 후 네임스페이스 자체를 삭제합니다. 이렇게 하려면 다음 명령을 실행합니다 kubectl delete .

kubectl delete namespace <namespace-name>  --grace-period=0 --force --wait=false

Warning

kubectl delete 종료자를 사용하여 실수로 삭제하는 것을 방지하는 경우 처음에는 명령이 성공하지 못할 수 있습니다. 종료자는 삭제 전 작업을 알리는 리소스의 키입니다. 종료자는 리소스에 대한 가비지 수집을 제어하며, 리소스를 제거하기 전에 수행할 정리 작업에 대해 컨트롤러에 경고하도록 설계되었습니다.

그러나 종료자가 반드시 실행해야 하는 코드를 식별하지는 않습니다. 실제로 종료자는 다음과 같은 방식으로 주석과 유사합니다.

  • 기본적으로 키 목록입니다.
  • 조작할 수 있습니다.

종료자가 있는 리소스를 삭제하려고 하면 컨트롤러가 종료자 키를 제거하거나 kubectl을 사용하여 종료자가 제거될 때까지 리소스가 종료 상태로 유지됩니다. 종료자 목록을 비운 후 Kubernetes는 리소스를 회수하고 레지스트리에서 삭제할 큐에 배치할 수 있습니다.

네임스페이스에 남아 있는 리소스가 없지만 네임스페이스가 여전히 상태에 있는 Terminating 경우 다음 kubectl patch 명령을 실행하여 종료자 필드를 비웁니다.

kubectl patch namespace <namespace-name> --patch '{"metadata": {"finalizers": null}}'

이 작업을 사용하면 명령을 다시 실행할 때 네임스페이스를 성공적으로 삭제할 kubectl delete 수 있습니다.

도움을 요청하십시오.

질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.