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
- PodScheduled
Pod가 배포될 Node를 지정했거나 스케쥴러가 Node 선택을 완료했을 경우 True
- 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;']
- 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
- tcpSocket
선택 옵션
- initialDelaySeconds → default: 0초
- periodSeconds → default: 10초
- timeoutSeconds → default: 1초
- successThreshold → default: 1회
- failureThreshold → default: 3회