본문으로 바로가기
반응형

Liveness ProbeReadiness Probe는 Kubernetes에서 Pod의 상태를 점검하기 위한 메커니즘으로, 애플리케이션의 가용성을 보장하고 클러스터의 안정성을 유지하는 데 중요한 역할을 합니다. 각각의 Probe는 Pod의 다른 상태를 확인하는 데 사용됩니다.

1. Liveness Probe

  • 역할:
    • 애플리케이션이 정상적으로 실행 중인지 확인합니다.
    • 애플리케이션이 문제가 있거나 비정상 상태에 빠졌을 경우, 해당 컨테이너를 자동으로 종료하고 다시 시작(Restart)합니다.
  • 사용 예시:
    • 무한 루프와 같은 비정상 상태에 빠진 애플리케이션.
    • 외부 요청을 더 이상 처리하지 않는 애플리케이션.
  • Liveness Probe가 실패하는 경우:
    • Kubernetes는 컨테이너를 재시작합니다.
    • 이는 애플리케이션의 자체 복구가 불가능한 상태에서 특히 유용합니다.
  • 구현 방식:
    • HTTP 방식:
      • 특정 엔드포인트(예: /healthz)로 요청을 보내서 200 OK 응답 여부를 확인.
    • Command 방식:
      • 컨테이너 내부에서 명령어를 실행해 결과로 상태 확인 (0: 성공, 1 이상: 실패).
    • TCP 방식:
      • 지정된 포트가 열려 있는지 확인.
livenessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 3
  periodSeconds: 10

2. Readiness Probe

  • 역할:
    • 애플리케이션이 트래픽을 처리할 준비가 되었는지 확인합니다.
    • 준비되지 않은 Pod에 트래픽을 보내지 않도록 방지합니다.
  • 사용 예시:
    • 애플리케이션이 부팅 후 데이터베이스 연결을 완료하거나 의존성 준비를 끝내야 하는 경우.
    • 애플리케이션이 일정 시간 동안 요청을 처리할 수 없는 경우(예: 백그라운드 작업 수행).
  • Readiness Probe가 실패하는 경우:
    • Kubernetes는 해당 Pod를 서비스 엔드포인트에서 제외합니다.
    • 컨테이너는 실행 중이지만 외부 요청을 받지 않게 됩니다.
  • 구현 방식:
    • HTTP 방식:
      • 특정 엔드포인트로 요청을 보내서 200 OK 응답 여부를 확인.
    • Command 방식:
      • 컨테이너 내부에서 명령어를 실행해 준비 상태 확인.
    • TCP 방식:
      • 지정된 포트가 열려 있는지 확인.
readinessProbe:
  httpGet:
    path: /readiness
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 10

비교

특징Liveness ProbeReadiness Probe

목적 컨테이너가 정상 동작하는지 확인 컨테이너가 트래픽을 처리할 준비가 되었는지 확인
실패 시 조치 컨테이너를 재시작 Pod를 서비스 엔드포인트에서 제외
적용 상황 컨테이너가 비정상 상태에 빠졌을 때 컨테이너가 임시적으로 요청을 처리할 수 없을 때
컨테이너 상태 실패 시 재시작 (CrashLoop 가능) 실패 시 서비스 엔드포인트에서 제외, 상태는 Running 유지

3. 실제 사용 시 고려사항

  • Liveness Probe와 Readiness Probe를 동시에 설정하여 애플리케이션의 안정성을 극대화.
  • 초기화가 오래 걸리는 애플리케이션의 경우 initialDelaySeconds를 적절히 설정.
  • 잘못된 Probe 설정으로 인해 애플리케이션이 재시작 루프에 빠지지 않도록 주의.

4. 추가 예시 (복합 Probe 설정)

containers:
- name: my-app
  image: my-app:latest
  livenessProbe:
    httpGet:
      path: /healthz
      port: 8080
    initialDelaySeconds: 3
    periodSeconds: 10
  readinessProbe:
    httpGet:
      path: /readiness
      port: 8080
    initialDelaySeconds: 5
    periodSeconds: 10

위 설정에서는 Liveness Probe가 애플리케이션의 실행 상태를 감시하고, Readiness Probe가 트래픽 처리 준비 상태를 점검합니다. 이를 통해 고가용성과 안정성을 동시에 확보할 수 있습니다.

반응형