카테고리 없음

[쿠버네티스] Probe

rosaleee 2025. 6. 8. 20:39

Kubernetes의 Pod의 상태를 체크하는 핵심 기능인 probe을 알아보겠습니다.

쿠버네티스 프로브란?

쿠버네티스에서는 컨테이너 상태를 파악하기 위해 3가지 probe를 제공합니다.

Probe 종류 역할 실패 시 동작

주요 활용 전략

startupProbe 앱 기동 중인지 확인 실패 시 컨테이너 재시작 초기 부팅 지연 대응. readiness/liveness 보호 역할
readinessProbe 트래픽 받을 준비 되었는지 확인 실패 시 서비스에서 제외 트래픽 차단으로 사용자 오류 방지 및 부하 완화
livenessProbe 애플리케이션이 살아있는지 확인 실패 시 컨테이너 재시작 치명적 장애에 대한 자동 복구

 

1. 앱 기동 중: startupProbe

  • 초기화 중엔 API 응답이 없지만, startupProbe는 재시작하지 않고 기다립니다.

2. 준비 완료: readinessProbe

  • DB 연결, 외부 API 연동 성공 → readinessProbe 성공 → 서비스로부터 트래픽 수신 시작

3. 장애 발생: readinessProbe 실패

  • 일시적 장애 발생 시 트래픽 차단됨. 앱은 살아 있으므로 재기동은 없음.

4. 치명적 장애: livenessProbe 실패

  • 앱이 응답하지 않으면 livenessProbe 실패 → 컨테이너 자동 재시작

YAML 설정 예시

# 앱이 완전히 뜰 때까지 기다리는 프로브 (초기화 감지용)
startupProbe:
  httpGet:              # HTTP 요청으로 상태 확인
    path: "/startup"    # /startup 엔드포인트 호출
    port: 8080          # 8080 포트에서 실행 중인 앱 기준
  periodSeconds: 5      # 5초마다 한번씩 상태 체크
  failureThreshold: 24  # 24번 연속 실패 시 컨테이너 재시작
                        # 즉, 최대 5초 × 24 = 120초 (2분)까지 대기

# 앱이 준비 완료되었는지 확인하는 프로브 (트래픽 수신 여부 결정)
readinessProbe:
  httpGet:
    path: "/readiness"  # /readiness 엔드포인트 호출
    port: 8080
  periodSeconds: 10     # 10초마다 한번 체크
  failureThreshold: 3   # 3번 실패하면 이 Pod에는 트래픽 안 보냄

# 앱이 살아있는지 확인하는 프로브 (치명적 장애 감지용)
livenessProbe:
  httpGet:
    path: "/liveness"   # /liveness 엔드포인트 호출
    port: 8080
  periodSeconds: 10     # 10초마다 체크
  failureThreshold: 3   # 3번 연속 실패 시 컨테이너 재시작