본문 바로가기

가상 머신/쿠버네티스

[ 쿠버네티스 / Kurbernetes ] Pod의 라이프 사이클

반응형

Kubernetes에서 Pod의 라이프 사이클은 생성부터 종료까지 여러 단계를 거치며, 각 단계에서 Pod의 상태를 모니터링하고 관리할 수 있습니다.
Pod의 라이프 사이클 단계는 다음과 같습니다:

1. Pod의 라이프 사이클 단계

  1. Pending:
    • Pod가 생성되었지만 아직 모든 컨테이너가 시작되지 않은 상태입니다.
    • 이는 스케줄러가 Pod를 적절한 노드에 할당하기 전 또는 이미지 다운로드, 자원 할당 등의 과정이 완료되지 않았을 때 발생합니다.
  2. Running:
    • 모든 컨테이너가 성공적으로 시작되어 실행 중인 상태입니다.
    • Pod가 노드에 할당되고, 모든 초기화 단계가 완료된 후 이 상태로 전환됩니다.
  3. Succeeded:
    • Pod 내의 모든 컨테이너가 성공적으로 종료된 상태입니다.
    • 각 컨테이너의 종료 상태가 0(정상 종료)일 때 이 상태로 전환됩니다.
    • 주로 단기 작업을 수행하는 Job에서 볼 수 있습니다.
  4. Failed:
    • Pod 내의 하나 이상의 컨테이너가 실패하여 종료된 상태입니다.
    • 컨테이너의 종료 상태가 0이 아닌 값을 반환할 때 이 상태로 전환됩니다.
  5. Unknown:
    • Pod의 상태를 알 수 없는 경우입니다.
    • 주로 노드와의 통신 문제가 발생했을 때 나타납니다.

2. Pod의 컨테이너 상태

Pod의 상태는 주로 각 컨테이너의 상태에 의해 결정됩니다. 컨테이너는 다음과 같은 상태를 가질 수 있습니다:

  1. Waiting:
    • 컨테이너가 아직 시작되지 않은 상태입니다.
    • 주로 이미지 풀, 자원 할당 등의 과정이 진행 중일 때 발생합니다.
  2. Running:
    • 컨테이너가 정상적으로 실행 중인 상태입니다.
    • 컨테이너가 시작되고, 애플리케이션이 정상적으로 동작하고 있는 상태입니다.
  3. Terminated:
    • 컨테이너가 종료된 상태입니다.
    • 정상 종료(종료 상태 0) 또는 비정상 종료(종료 상태 0이 아닌 값)를 포함합니다.

3. Pod 라이프 사이클 관리 전략

Kubernetes는 Pod의 라이프 사이클을 관리하기 위한 다양한 전략을 제공합니다:

  1. Liveness Probes:
    • Pod가 정상적으로 동작하고 있는지 주기적으로 확인하는 방법입니다.
    • Liveness Probe에 실패할 경우, Kubernetes는 컨테이너를 재시작합니다.
  2. Readiness Probes:
    • Pod가 트래픽을 받을 준비가 되었는지 확인하는 방법입니다.
    • Readiness Probe에 실패할 경우, Pod는 서비스 엔드포인트에서 제외됩니다.
  3. Startup Probes:
    • 컨테이너가 시작되는 동안에만 실행되는 프로브로, 컨테이너가 시작될 때까지 기다린 후 Liveness와 Readiness Probe를 실행합니다.

4. Pod 종료 과정

Pod의 종료 과정은 다음과 같습니다:

  1. Graceful Termination:
    • Kubernetes는 SIGTERM 신호를 컨테이너에 보내 종료를 요청합니다.
    • 컨테이너는 주어진 유예 기간(기본값 30초) 동안 작업을 마무리하고 종료합니다.
    • 유예 기간이 지나도 종료되지 않으면 SIGKILL 신호를 보내 강제로 종료합니다.
  2. PreStop Hook:
    • 컨테이너가 종료되기 전 실행할 명령 또는 스크립트를 정의할 수 있습니다.
    • 이는 애플리케이션의 정상적인 종료 절차를 보장하기 위해 사용됩니다.

5. Pod 재시작 정책

Pod는 다양한 재시작 정책을 가질 수 있으며, 이는 RestartPolicy 필드로 정의됩니다:

  1. Always:
    • Pod 내 컨테이너가 종료될 때마다 항상 재시작합니다.
    • 주로 Deployment와 같은 지속적인 서비스에 사용됩니다.
  2. OnFailure:
    • 컨테이너가 실패했을 때(종료 상태가 0이 아닌 경우)만 재시작합니다.
    • 주로 Job과 같은 일회성 작업에 사용됩니다.
  3. Never:
    • 컨테이너가 종료되더라도 재시작하지 않습니다.
    • 특정 시나리오에서만 사용됩니다.

이러한 Pod의 라이프 사이클 관리 메커니즘은 Kubernetes 클러스터 내에서 애플리케이션의 안정성과 가용성을 보장하는 데 중요한 역할을 합니다.

반응형