쿠버네티스의 pod에서 실행되는 컨테이너가 시작하기 전과 후에 진행할 작업을
pod 리소스 파일에 정의해줄수 있다.
-postStart
-> 컨테이너가 생성된 직후, 쿠버네티스는 postStart lifecycle hook을 실행한다.
-> postStart hook은 컨테이너가 시작된 직후 실행되며,
컨테이너의 entrypoint와 거의 동시에 실행된다.
(entrypoint보다 반드시 먼저 실행되는 것은 아니며, 실행 순서는 보장되지 않는다.)
-> 쿠버네티스는 postStart hook이 실행되는 동안에도
컨테이너를 RUNNING 상태로 표시할 수 있으며,
postStart hook의 완료를 RUNNING 상태 전환의 절대적인 조건으로 사용하지는 않는다.
-> postStart hook은 컨테이너 초기화 작업(환경 설정, 파일 생성 등)에 사용된다.
-preStop
-> 컨테이너가 종료되기 직전에, 쿠버네티스는 preStop lifecycle hook을 실행한다.
-> 쿠버네티스의 컨테이너 관리 프로세스는 preStop handler의 실행이 완료될 때까지
컨테이너 종료를 진행하지 않고 대기한다.
-> preStop hook은 Pod가 삭제되거나, 컨테이너가 재시작되거나,
또는 Pod가 종료되는 경우에 실행된다.
->preStop hook은 graceful shutdown, connection draining, 리소스 정리 등의 작업에 사용된다.

ps.
initContainer와 sidecarContainer와의 차이점은,
initContainer는 메인 애플리케이션 컨테이너가 사용하는
데이터를 준비하기 위한 작업을 수행하며,
이를 위해 Pod에 정의된 볼륨을 마운트하여 파일 생성, 초기화,
설정 등의 작업을 수행한다.
반면, preStart와 같은 lifecycle hook을 사용하면,
별도의 initContainer 없이도 컨테이너 시작 직전에 필요한 준비 작업을 수행할 수 있다.
이 경우 해당 작업은 컨테이너의 파일 시스템 내에서 직접 수행되므로,
여러 컨테이너가 동일한 파일에 접근하기 위해 반드시 볼륨을 공유할 필요는 없다.
따라서 initContainer는 Pod 수준에서 공유되는 리소스나 데이터를 준비하는 데 적합하며,
lifecycle hook(preStart)은 개별 컨테이너 수준에서의 초기화 작업에 적합하다는 차이점이 있다.
referemce
https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/
Attach Handlers to Container Lifecycle Events
This page shows how to attach handlers to Container lifecycle events. Kubernetes supports the postStart and preStop events. Kubernetes sends the postStart event immediately after a Container is started, and it sends the preStop event immediately before the
kubernetes.io
'ops > kubernetes' 카테고리의 다른 글
| Terminating상태로 삭제되지 않는 리소스 삭제하기 (0) | 2026.02.28 |
|---|---|
| readinessProbe & livenessProbe (0) | 2026.02.15 |
| 계속 Terminated 상태인 namespace 삭제하기 (0) | 2026.02.03 |
| is invalid: metadata.annotations: Too long: may not be more than 262144 bytes (0) | 2026.02.03 |
| 컨테이너 실행 유저 설정하기 (0) | 2026.01.30 |