본문 바로가기

Cloud/Kubernetes

[Kubernetes] Running 상태 이외의 상태 Pod 삭제

CI/CD나 cronjob을 돌리게 되면 Pod가 Completed 상태로 남거나 Pending인 친구들이 많다.

 

크론탭에 등록하여 주기적으로 삭제를 해주는 것도 좋지만, 일시적인 상태 변화가 있는 Pod들의 경우 예외라는 생각을 가지고 있어, 그 방법은 좋지 않는 것 같다. 또 한, Completed나 Pending 상태의 친구들이 많게 되면 추가적인 Pod 생성이 되지 않으므로 정리가 필요 하다.

 


삭제 하기 전, 지울만한 녀석들인지 확인을 한다.

$ kubectl get pods -A  --field-selector 'status.phase!=Running'

 

 

지우기 싫은 파드가 있다면 grep 명령어를 통해 조율을 해줘도 된다.

ex. kubectl get pods -A  --field-selector 'status.phase!=Running' | grep Completed

 

이 후, 파드를 삭제 한다.

$ kubectl get pods -A  --field-selector 'status.phase!=Running' | $(awk '{print "kubectl -n " $1 " delete pod "$2}')

 

처음 확인 하는 녀석들 후 $(awk '{print "kubectl -n " $1 " delete pod "$2}') 명령어만 추가해 주면 깔끔하게 삭제가 된다. Completed 상태의 Pod들도 노드당 110개의 Pod만 띄울 수 있으므로 정리를 해주는 것이 좋다.