개발 창고/Server

Pod 살펴보기 - Part7: Pod의 건강상태는?

Royzero 2025. 7. 25. 22:00
반응형

들어가며: Pod의 상태를 모니터링하는 이유는?

쿠버네티스에서 Pod는 항상 정상적으로 실행된다고 가정할 수 없습니다.
애플리케이션이 죽지 않았지만 응답이 느리거나, 트래픽을 받을 준비가 안 된 경우도 존재합니다.

이런 문제를 해결하기 위해 Kubernetes는 Liveness Probe, Readiness Probe, Startup Probe라는 건강 체크(Health Check) 메커니즘을 제공합니다.

이번 글에서는 다음 내용을 다룹니다:

  • Pod 상태 관리의 기본 개념
  • Liveness, Readiness, Startup Probe 차이점
  • 실습 가능한 YAML 예제
  • 운영 환경에서의 활용 전략

목차 (Table of Contents)

  1. Pod 상태 관리란?
  2. Probe의 종류와 역할
  3. Liveness Probe 설정
  4. Readiness Probe 설정
  5. Startup Probe 설정
  6. 건강 체크 실습 예제
  7. 운영 환경에서의 활용 팁
  8. FAQ (Answer Engine Optimization)
  9. 핵심 요약
  10. 마무리

1. Pod 상태 관리란?

쿠버네티스는 Pod의 상태를 모니터링하여 정상적으로 작동하지 않는 컨테이너를 자동으로 재시작하거나 트래픽 라우팅에서 제외할 수 있습니다.

  • Running: 컨테이너가 정상 동작 중
  • CrashLoopBackOff: 컨테이너가 계속해서 재시작 중
  • Pending: 스케줄링은 되었지만 아직 실행 전

2. Probe의 종류와 역할

Probe 종류 역할
Liveness Probe 컨테이너가 살아있는지 확인. 실패 시 재시작
Readiness Probe 컨테이너가 트래픽을 받을 준비가 되었는지 확인
Startup Probe 애플리케이션 초기화(Startup)가 완료될 때까지 기다림

3. Liveness Probe 설정

Liveness Probe는 애플리케이션의 상태를 주기적으로 확인하여 응답하지 않을 경우 컨테이너를 재시작합니다.

livenessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 10

4. Readiness Probe 설정

Readiness Probe는 Pod이 트래픽을 받을 준비가 되었는지를 확인합니다.
실패 시 해당 Pod는 Service의 엔드포인트에서 제외됩니다.

readinessProbe:
  tcpSocket:
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 10

5. Startup Probe 설정

Startup Probe는 애플리케이션 초기 구동이 느린 경우 유용합니다.
Liveness Probe가 너무 빨리 실행되어 컨테이너가 죽는 것을 방지합니다.

startupProbe:
  httpGet:
    path: /startup
    port: 8080
  failureThreshold: 30
  periodSeconds: 10

6. 건강 체크 실습 예제

아래 YAML은 Liveness, Readiness, Startup Probe를 모두 포함한 Pod 예시입니다.

apiVersion: v1
kind: Pod
metadata:
  name: health-pod
spec:
  containers:
    - name: app
      image: myapp:latest
      ports:
        - containerPort: 8080
      livenessProbe:
        httpGet:
          path: /healthz
          port: 8080
        initialDelaySeconds: 5
        periodSeconds: 10
      readinessProbe:
        httpGet:
          path: /ready
          port: 8080
        initialDelaySeconds: 5
        periodSeconds: 10
      startupProbe:
        httpGet:
          path: /startup
          port: 8080
        failureThreshold: 30
        periodSeconds: 10

7. 운영 환경에서의 활용 팁

  1. 적절한 초기 지연값(initialDelaySeconds)을 설정해 컨테이너 부팅 시 false-negative 방지
  2. 엔드포인트 헬스 체크 API(/healthz, /ready)를 구현하여 쿠버네티스 Probe와 연계
  3. 장시간 초기화가 필요한 앱은 Startup Probe를 반드시 설정
  4. 모니터링 도구(Prometheus, Grafana)와 연계해 Probe 실패 횟수 추적

8. FAQ (Answer Engine Optimization)

Q1. Liveness Probe와 Readiness Probe의 차이는?
A. Liveness는 컨테이너가 살아있는지 확인하고, Readiness는 트래픽 처리 준비 여부를 확인합니다.

Q2. Probe 설정이 없으면 어떻게 되나요?
A. 쿠버네티스는 기본적으로 컨테이너 상태를 체크하지 않아 문제가 발생해도 자동 재시작하지 않을 수 있습니다.

Q3. Startup Probe는 언제 필요한가요?
A. 애플리케이션 초기화가 오래 걸려 Liveness Probe가 잘못 실패하는 상황을 방지할 때 사용합니다.


9. 핵심 요약

개념 설명
Liveness Probe 컨테이너 상태 확인 및 재시작 트리거
Readiness Probe 트래픽 라우팅 준비 상태 확인
Startup Probe 초기화 과정 동안 Liveness 체크 지연
운영 팁 초기 지연값, 엔드포인트 구현, 모니터링 연계

10. 마무리

Pod의 건강 상태를 관리하면 가용성과 안정성이 크게 향상됩니다.

반응형