Pod 종료 시퀀스
2026-02-12 작성2026-09-17 수정2분 읽기
문서 도구
Graceful Shutdown 완벽 가이드
Graceful Shutdown은 Pod 종료 시 진행 중인 요청을 안전하게 완료하고, 새로운 요청 수신을 중단하는 패턴입니다. 무중단 배포와 데이터 무결성의 핵심입니다.
Pod 종료 시퀀스 상세
Kubernetes에서 Pod 종료는 다음 순서로 진행됩니다.
타이밍 세부 사항:
- T+0초:
kubectl delete pod또는 롤링 업데이트로 Pod 삭제 요청 - T+0초: API Server가 Pod 상태를
Terminating으로 변경 - T+0초: 비동기적으로 두 작업 동시 시작:
- Endpoint Controller가 Service Endpoints에서 Pod IP 제거
- kubelet이 preStop Hook 실행
- T+0~5초: preStop Hook의
sleep 5실행 (Endpoints 제거 대기) - T+5초: preStop Hook이
kill -TERM 1실행 → SIGTERM 전송 - T+5초: 애플리케이션이 SIGTERM 수신, Graceful Shutdown 시작
- T+5~60초: 애플리케이션이 진행 중인 요청 완료, 정리 작업 수행
- T+60초:
terminationGracePeriodSeconds도달 시 SIGKILL (강제 종료)
preStop sleep이 필요한 이유
Endpoint 제거와 preStop Hook 실행은 비동기로 발생합니다. preStop에 5초 sleep을 추가하면, Endpoint Controller와 kube-proxy가 iptables를 업데이트하여 새로운 트래픽이 종료 중인 Pod으로 유입되지 않도록 보장합니다. 이 패턴 없이는 종료 중인 Pod으로 트래픽이 계속 전송되어 502/503 에러가 발생할 수 있습니다.