[Kubernetes] k8s 환경에서 springboot graceful shutdown 방법
거북이 developer
처음 Kubernetes 를 공부하고 적용해보기 시작했을 때,
무중단 배포의 필수조건인 Graceful Shutdown 을 하려면 어떻게 해야할까를 고민한적이 있었습니다.
어설프게 알고 있던 지식을 활용하여
Readness Probe 와 Spring Actuator 를 활용하여 Custom Health Indicator 를 구현하고
preStop 훅을 통해 Application 상태를 변경하여 Service 에서 제외시키면
Pod 가 종료되기 전에 요청이 들어오지 않는 상태로 바뀌기 때문에
Graceful Shutdown 을 할 수 있겠지? 라고 생각하며 나름 자신있게 정리했는데
막상 Spring 공식 문서를 보니 preStop 훅에 Sleep 을 걸어주는게 Best Practice 라는 내용을 보고 얼마나 허무했는지 모릅니다. 🥲
공식문서와 전체적인 개념을 제대로 보지 않고 어설픈 지식으로 해결하려다 생긴 해프닝이었는데요, (이때부터였어요.. 제가 공식문서에 집착하기 시작한게..)
왜 Sleep 만 걸어도 Graceful Shutdown 이 가능한지에 대해 간단히 정리한 내용을 공유드립니다.
Kubernetes 를 공부하신 분들이라면 대부분 아는 간단한 내용이지만,
그때 받았던 충격이 아직도 선명하여 기록으로 남겨보았습니다.
📚 원문
https://yang1s.tistory.com/33
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 1월 29일 오전 7:15
어제 마침 왜 sleep걸어주는게 best practice지 하고 궁금함을 가졌는데, 출근길에 포스팅해주신 글 보고 어느정도 해소되네요! 감사합니다