Liveness·Readiness·Startup Probe 비교
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초 기동 허용이다.
| 상태 | Liveness | Readiness | Startup |
|---|---|---|---|
| 기동 중 | 무시 | 무시 | 사용 |
| 기동 완료 | 사용 | 사용 | 종료 |
| readiness 실패 | 영향 없음 | 트래픽 차단 | 해당 없음 |
| liveness 실패 | 재시작 | 영향 없음 | 해당 없음 |
startup은 별도 컨트롤러로 두고 readiness, liveness만 활성화 시킨뒤에 기동 플래그 기준으로 반환제어하는걸 추천