Pod Life Cycle

dongbin_Shin·2022년 11월 15일
0

kubernetes

목록 보기
2/16

Life Cycle

3 요소

Phase

Pod의 전체 상태를 대표하는 속성

  • pending
  • running
  • succeeded
  • failed
  • unknown

Conditions

Pod가 생성되면서 실행하는 단계와 상태를 알려주는 속성

  • Conditions
    • Initialized
    • ContainerReady
    • PodScheduled
    • Ready
  • Reason (status가 false일 경우)
    • ContainersNotReady
    • PodCompleted

ContainerStatuses

컨테이너마다의 상태를 알려주는 속성

  • State
    • Watinig
    • Running
    • Terminated
  • Reason
    • ContainerCreating
    • CrashLoopBackOff
    • Error
    • Completed

Pod status

Pending

  1. PodScheduled
    Pod가 배포될 Node를 지정했거나 스케쥴러가 Node 선택을 완료했을 경우 True
  2. Initialized
    초기화 해야하는 내용이 있을 경우 initContainer가 생성되어 작업을 완료했을 경우 True
    apiVersion: v1
     kind: Pod
     metadata:
       name: pod
       labels:
         app: myapp
     spec:
       containers:
       - name: myapp-container
         image: something
       initContainers:
       - name: init-myservice
         image: something
         command: ['sh', '-c', 'until nslookup myservice; do echo waiting for my service; sleep 2; done;']
  3. Container에 image를 다운로드

    위 과정 중 Container의 state ⇒ Wating , reason ⇒ ContainerCreating

Running

  • 정상적으로 실행이 될 경우
    • Container의 state ⇒ Running
  • Container에 문제가 있을 경우
    • Pod의 ContainerReady ⇒ False , Ready ⇒ False
    • Container의 state ⇒ Wating , reason ⇒ CrashLoopBackOff

Failed

Job, CronJob으로 생성한 Pod의 Container 중 하나라도 문제가 생겼을 경우

  • Pod의 ContainerReady ⇒ False , Ready ⇒ False
  • Container의 state ⇒ Terminated , reason ⇒ Error

Succeeded

Job, CronJob으로 생성한 Pod의 모든 Container가 작업을 성공적으로 마쳤을 경우

  • Pod의 ContainerReady ⇒ False , Ready ⇒ False
  • Container의 state ⇒ Terminated , reason ⇒ Completed

Unknown

Pending이나 Running 상태일 때 통신 장애가 발생할 경우

ReadinessProbe, LivenessProbe

ReadinessProbe

  • App 구동 순간에 트래픽 실패를 없앰
  • replicas로 생성된 Pod들 중 하나가 장애로 인해 Pod 재생성 될 때 App이 Booting 중인 상황이라면 Pod와 Container는 Running이더라도 트래픽 실패로 이어짐
  • App이 구동되기 전까지는 Service와 연결을 하지 않도록 하여 트래픽을 받지 않게 해줌

LivenessProbe

  • App 장애시 지속적인 트래픽 실패를 없앰
  • 정상 실행 중에 App에서 문제가 발생하여 App이 down 된 상황이더라도 Pod과 Container는 Running이므로 지속적인 트래픽 실패로 이어짐
  • 문제 발생시 Pod를 재시작하게 해줌

옵션

필수 옵션

  • httpGet
    • Port
    • Host
    • Path
    • HttpHeader
    • Scheme
  • Exec
    • Command
  • tcpSocket
    • Port
    • Host

선택 옵션

  • initialDelaySeconds → default: 0초
  • periodSeconds → default: 10초
  • timeoutSeconds → default: 1초
  • successThreshold → default: 1회
  • failureThreshold → default: 3회
profile
멋있는 백엔드 개발자

0개의 댓글