TIL

Pod

Pod phase

Phase 의미
Pending 클러스터에 받아들여졌으나 컨테이너 준비 미완료 (스케줄 대기·이미지 pull 중)
Running 노드에 바인딩되고 모든 컨테이너 생성됨, 최소 하나가 실행/시작/재시작 중
Succeeded 모든 컨테이너가 성공 종료(0), 재시작되지 않음
Failed 모든 컨테이너 종료, 최소 하나가 실패로 종료 (non-zero exit 또는 시스템 종료)
Unknown 노드와 통신 실패로 상태를 알 수 없음

Container state

State 의미
Waiting 시작에 필요한 작업 진행 중 (이미지 pull, Secret 적용 등). Reason 필드 포함
Running 정상 실행 중. postStart hook이 정의돼 있다면 이미 완료된 시점
Terminated 실행 후 완료 또는 실패. exit code, 시작·종료 시각 포함. preStop hook이 있다면 종료 전 실행됨

restartPolicy

정책 종료 후 동작
Always exit code와 무관하게 항상 재시작
OnFailure non-zero exit일 때만 재시작
Never 어떤 경우에도 재시작 안 함

Restart backoff

Pod conditions

Condition 의미
PodScheduled Pod이 노드에 스케줄됨
PodReadyToStartContainers 샌드박스 생성·네트워크 구성·볼륨 마운트 완료 — 컨테이너 실행 직전 단계
Initialized 모든 init container가 성공 종료
ContainersReady Pod 안의 모든 컨테이너가 ready 상태
Ready Pod이 요청을 받을 수 있음 — 매칭되는 Service의 EndpointSlice에 포함됨
DisruptionTarget preemption·eviction·GC 등으로 곧 종료될 예정

Readiness gates

Container probes

Probe 메커니즘 (4종)

메커니즘 동작 성공 조건
exec 컨테이너 안에서 명령 실행 exit code 0
grpc gRPC health check (grpc.health.v1.Health) 응답 status가 SERVING
httpGet Pod IP의 지정 포트·경로로 HTTP GET status code 200 ~ 399
tcpSocket Pod IP의 지정 포트로 TCP 연결 시도 포트가 열려 있음

Probe 종류 (3종)

종류 용도 실패 시 동작
livenessProbe 컨테이너가 살아있는지 컨테이너 kill → restartPolicy 따라 재시작
readinessProbe 트래픽을 받을 준비가 됐는지 Pod IP를 모든 매칭 Service의 EndpointSlice에서 제거 (트래픽 차단)
startupProbe 초기 부팅이 완료됐는지 컨테이너 kill → restartPolicy 따라 재시작

사용 기준

Pod termination

Termination flow

Forced termination

Sidecar container 종료 순서

Pod Garbage Collection