TIL

Container Lifecycle Hooks

Hook 종류

Hook 시점 동작 특성
postStart 컨테이너 생성 직후 ENTRYPOINT와 동시(concurrent) 실행 — hook이 메인 프로세스 시작 전·중·후 어디서든 돌 수 있음
preStop API 요청·probe 실패·preemption 등으로 종료 직전 컨테이너가 이미 종료된 상태면 호출되지 않음. hook 완료 후에야 TERM 전송

postStart

preStop

StopSignal

Hook handler 종류

핸들러 실행 위치 용도
exec 컨테이너 안 컨테이너의 cgroup·namespace 안에서 명령 실행. 사용 리소스가 컨테이너에 카운트됨
httpGet kubelet 컨테이너의 지정 엔드포인트에 HTTP 요청. 컨테이너 프로세스가 아직 listen 중이 아닐 수 있어 postStart엔 비권장
sleep kubelet 지정 시간 동안 컨테이너 일시 정지. preStop에서 drain 대기에 유용
lifecycle:
  postStart:
    exec:
      command: ["/bin/sh", "-c", "echo started > /tmp/ready"]
  preStop:
    httpGet:                  # 또는 sleep: { seconds: 10 }
      path: /shutdown
      port: 8080

실행 동작

전달 보장

디버깅