DevOps

graceful shutdown

Vince_rf 2025. 1. 30. 09:30

Kubernetes에서 파드를 삭제할 때 기본적으로 graceful termination(우아한 종료)이 적용됩니다. 기본적으로 kubectl delete pod 명령어를 실행하면 **30초(default) 동안 종료 신호(SIGTERM)**를 보내고, 이 시간이 지나면 강제 종료(SIGKILL)됩니다.

만약 graceful termination을 없애고 즉시 삭제(force delete) 하고 싶다면, --force --grace-period=0 옵션을 사용하면 됩니다.


즉시 삭제 명령어

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

설명

  1. --grace-period=0
    • 기본적으로 kubectl delete pod는 terminationGracePeriodSeconds에 설정된 시간(기본 30초)만큼 기다립니다.
    • 이를 0으로 설정하면 기다리지 않고 즉시 삭제됩니다.
  2. --force
    • --grace-period=0과 함께 사용해야 합니다.
    • 강제 삭제를 의미하며, API 서버에서 파드가 곧바로 삭제됩니다.

예제

 
kubectl delete pod my-pod --grace-period=0 --force

 


주의 사항

  • --force 옵션을 사용하면 파드가 강제 삭제되므로 정리 작업이 수행되지 않을 수 있습니다.
  • 강제 삭제된 파드는 이전 노드에서 "Terminating" 상태로 남아 있을 수도 있으므로, 필요하면 다음 명령어로 확인하세요:
    bash
    복사편집
    kubectl get pods -A | grep Terminating
  • 만약 파드가 여전히 남아 있다면, API 서버에서 직접 제거할 수도 있습니다:
     
     
    kubectl patch pod <pod-name> -p '{"metadata":{"finalizers":null}}'