Liveness·Readiness·Startup Probe 비교

525 단어·2 분·원문(.md)

Liveness Probe #

컨테이너가 살아있는지(Deadlock, Hang 여부)를 확인

실패시에 컨테이너 재시작하며 프로세스는 살아있지만 더이상복구가 불가능한 상태 혹은 gc폭주, 데드락, 무한 대기상태를 체크할때 씀.

실패시에 즉시 restart되며 트래픽차단과는 무관함

livenessProbe:
  httpGet:
    path: /health/live
    port: 8080
  initialDelaySeconds: 30
  periodSeconds: 10

Readiness Probe #

트래픽을 받아도 되는 상태인지 판단함

실패시에 pod는 살아있지만 service endpoint에서 제외함 재시작도 안함

외부 의존성이 자애가 났다거나 서킷 오픈 혹은 워밍업 완료여부 체크

특징은 트래픽 차단용이고 가장 자주 쓰인다.

readinessProbe:
  httpGet:
    path: /health/ready
    port: 8080
  initialDelaySeconds: 10
  periodSeconds: 5

Startup Probe #

기동이 끝났는지를 판단한다 느린 시작 애플리케이션을 보호하기 위해서도

실패시 동작으로 기동 완료전까지 liveness readiness를 비활성화하며 startup 실패 누적시 재시작한다.

언제 쓰냐 spring boot up, migration, cache loading, class loading 등

특징으로는 아직 살아있음을 판단하지 마라는 선언을 하고 최초 기동 구간 전용이다.

startupProbe:
  httpGet:
    path: /health/startup
    port: 8080
  failureThreshold: 30
  periodSeconds: 5

위 예시는 30초씩 5번 총 150초 기동 허용이다.

상태LivenessReadinessStartup
기동 중무시무시사용
기동 완료사용사용종료
readiness 실패영향 없음트래픽 차단해당 없음
liveness 실패재시작영향 없음해당 없음

startup은 별도 컨트롤러로 두고 readiness, liveness만 활성화 시킨뒤에 기동 플래그 기준으로 반환제어하는걸 추천

SRE/question/q_14.md