1.
pod의 lifecycle
a.
pending → running → succeeded → failed
i.
pending : ReadinessProbe, Policy
ii.
Running : LivenessProbe, Qos
iii.
Succeeded. Failed : policy
b.
pod의 Status
i.
phase
1.
pod의 전체 상태를 대표하는 속성
2.
Pending, Running, Succeeded, Failed, Unknows
ii.
Conditions
1.
pod가 생성되면서 실행하는 단계의 상태를 보여줌
2.
Initialized, ContainerReady, PodScheduled, Ready
iii.
Reason
1.
Condition의 false 발생시 세부 내용
2.
ContainerNotReady, PodCompleted
iv.
State
1.
pod 내 컨테이너를 대표하는 상태
2.
Waiting, Running, Terminated
3.
Reason : container 상태에 대한 세부 내용
a.
ContainerCreating, CrashLoopbackOff, Error, Completed
2.
Pending : Pod의 최초 상태
a.
1단계 PodScheduled : True
i.
pod가 어떤 node위에 올라갈지 완료되면 true
b.
2단계 Init Container
i.
본 Container가 생성되기 전 초기화가 필요한 내용을 보유, 볼륨이나 보안 설정 등 사전 설정
ii.
pod yaml 안에 initcontainers라는 항목으로 초기화 스크립트 추가
iii.
본 Container보다 먼저 실행이 되서 성공하거나, 없을 경우 상태가 True
c.
Container의 이미지를 다운로드
i.
다운로드 동안 Container의 상태는 Waiting, Reason은 ContainerCreating
3.
Running : Pod와 Container가 기동된 상태
a.
Container의 상태
i.
정상적으로 동작하지 못했을때 Waiting 상태, Reason은 CrashLoopBackOff
ii.
pod는 Running이더라 하더라도, Container는 Running이 아닐수 있음
iii.
pod뿐만 아니라 Container의 상태도 확인 필요
b.
pod는 Container가 정상 동작하지 않아도 Running으로 간주 → ContainerReady/ready : False
c.
pod가 정상 동작시 → ContainerReady/ready : true
4.
job이나 Cronjob의 경우 Job이 완료됨 → pod가 더 이상 일을 하지 않는 상태
a.
작업 성공 여부와 상관없이 ContainerReady/ready : False
b.
Failed : 작업을 하는 container 중 하나라도 문제가 발생해 error가 발생
c.
Succeeded : Container들이 모두 Completed로 모든 작업이 정상 완료
5.
기타
a.
Failed : Pending 중에 발생
b.
Unknown : Pending 또는 Running 상태에서 발생, 주로 통신 장애, 시간이 길어지면 Failed로 변경
1.
ReadinessProbe : APP이 구동되는 순간에 트래픽 실패를 없앰
a.
기본원리
i.
pod가 Fail 나서 auto healing 기능에 의해 recreate 된순간 Service 트래픽이 전달
ii.
pod는 생성되었으나 APP이 구동되기 전 순간동안 트래픽이 인입되면 사용자 장애 경험
iii.
App이 완전히 준비된 다음에야 트래픽을 전달
b.
동작 : 3가지 상태 확인 방법 중 1가지를 통해 서비스 상태를 확인
i.
httpget : http 의 접속을 통한 상태 확인
ii.
exec : 특정 명령어를 통한 상태 확인
iii.
tcpsocket : 포트번호 접속을 통한 상태 확인
c.
pod 동작시
i.
readiness probe가 성공하기 전 container가 구동중이더라도, containerready/ready가 false
ii.
service에서도 pod를 notreadyaddress로 간주
2.
LivenessProbe : App 장애시 지속적인 트래픽 실패를 없앰
a.
pod가 구동중에 pod는 정상 동작중이지만, 내부에 APP이 장애가 발생
b.
pod가 restart되어 장애가 유지되는 것을 방지
c.
동작 : httpget, exec, tcpsocket을 통한 확인
i.
서비스 장애로 판단시 pod restart 수행











