쿠버네티스에서의 파드 라이프사이클 알아보기 🚀

쿠버네티스에서 파드의 라이프사이클은 많은 개발자들에게 중요한 주제입니다. 파드는 컨테이너를 위한 집합체이자 최소 배포 가능한 유닛으로, 여러 상태 변화를 거칩니다. 이 글에서는 파드의 라이프사이클에 대해 알아보겠습니다.

파드의 단계 🛠️

파드는 다음과 같은 주요 라이프사이클 단계를 거칩니다:

  1. Pending: 파드가 클러스터에서 승인되었지만, 컨테이너가 아직 생성되지 않은 상태입니다. 이 단계에는 스케줄링 및 이미지 다운로드 시간이 포함됩니다.
  2. Running: 파드가 노드에 바인딩되고 모든 컨테이너가 실행 중입니다. 적어도 하나의 컨테이너가 실행 중이어야 합니다.
  3. Succeeded: 파드 내의 모든 컨테이너가 성공적으로 종료되었으며 재시작되지 않습니다.
  4. Failed: 파드 내의 적어도 하나의 컨테이너가 실패로 종료되었습니다.
  5. Unknown: 파드의 상태를 정확히 알 수 없는 경우로, 일반적으로 네트워크 오류로 인해 발생합니다.

컨테이너 상태 📦

각 컨테이너는 파드 내에서 개별적으로 상태를 가집니다:

  • Waiting: 컨테이너가 아직 시작되지 않은 상태입니다. 이 상태에서는 준비 중인 작업이 진행 중입니다.
  • Running: 컨테이너가 정상적으로 실행 중입니다.
  • Terminated: 컨테이너가 실행을 완료하거나 실패하여 종료된 상태입니다.

컨테이너 재시작 정책 ♻️

파드의 restartPolicyAlways, OnFailure, Never의 값을 가질 수 있으며, 기본값은 Always입니다. 이는 컨테이너의 재시작을 제어하는 데 사용됩니다.

파드의 조건 및 준비성 🎯

  • PodScheduled: 파드가 노드에 스케줄되었습니다.
  • ContainersReady: 모든 컨테이너가 준비되었습니다.
  • Ready: 파드가 요청을 처리할 수 있으며 서비스에 추가될 준비가 되었습니다.

준비성 게이트 예시

kind: Pod
spec:
  readinessGates:
    - conditionType: "www.example.com/feature-1"
status:
  conditions:
    - type: Ready
      status: "False"

파드 및 컨테이너의 종료 과정 💤

파드를 삭제할 때는, 해당 프로세스가 정상적으로 종료되고 정리가 필요합니다. 쿠버네티스는 파드의 유예 기간을 설정하여 TERM 신호를 보내고, 이후에는 SIGKILL을 통해 강제로 종료할 수 있습니다.

강제 파드 종료

파드를 강제로 종료하려면 --grace-period=0--force 플래그를 사용하여 즉시 삭제할 수 있습니다. 이는 클러스터의 자원을 비정상적으로 남겨두거나 회수하지 않을 수 있으니 주의가 필요합니다.

마무리 🎉

이번 포스팅을 통해 쿠버네티스의 파드 라이프사이클과 관련 메커니즘을 살펴보았습니다. 어떤 상황에서도 파드의 상태를 명확히 이해하고 적절히 관리하는 것이 중요합니다. 쿠버네티스의 유연한 구조 덕분에 다양한 시나리오에 맞춰 파드를 활용할 수 있습니다. 🌟

더 많은 정보를 원하신다면, 쿠버네티스 공식 문서를 확인해주세요.

질문이나 피드백이 있으시면 언제든지 댓글로 남겨주세요. 감사합니다! 👋

728x90