클라우드/쿠버네티스(Kubernetes)

쿠버네티스 Kubernetes 파드(Pod)의 생명 주기

두뚜 2021. 7. 8. 16:35

 

더보기

# 파드의 생명주기

Pending -> Running  -> Succeeded, Failed
쿠버네티스의 구성 요소인 kubelet는 파드의 컨테이너 상태를 추적
오류가 발생하면 재시작한다
파드는 최초에 생성될 때 한번 스케줄링 된다
중지되거나 종료될때까지 같은 노드에서 실행


# 파드의 생명주기
파드를 일회용으로 간주
컨트롤러 리소스를 이용하여 파드 관리

# 파드의 단계 확인 
# kubectl get pods 명령어 결과중에 STATUS 필드에서 확인
# 파드 오브젝트의 .status.phase 필드에서 확인
vagrant@k-control:~$ kubectl get pod ldh-pod -o jsonpath='{.status.phase}'
Running

# 파드의 단계

#Pending
pulling이 되지 못한 상태
파드가 클러스터에서 승인되었지만 , 실행되지 않은 상태
파드가 스케줄링 되기 전

#Running
파드가 노드에 할당 됨
하나 이상의 컨테이너가 실행중
시작 또는 재시작 중

#Succeeded
모든 컨테이너가 정상적으로 종료
재시작 되지 않음

#Failed
모든 컨테이너가 종료
하나 이상의 컨테이너가 실패로 종료

#Unknown
알수없음
일반적으로 노드와의 통신 오류

 

# 컨테이너의 상태
스케줄러가 파드를 특정 노드에 할당하면, kubelet은 컨테이너 런타임을 이용하여 컨테이너를 생성
kubelet은 컨테이너의 상태를 주기적으로 모니터링

# 컨테이너의 상태 확인
vagrant@k-control:~$ kubectl get pod ldh-pod -o jsonpath='{.status.containerStatuses[*].state}'
{"running":{"startedAt":"2021-07-08T00:26:56Z"}}

# 컨테이너의 상태

# Waiting
컨테이너가 Running 또는 Terminated 상태가 아닌 상태
컨테이너 시작 전 필요한 작업 중 (이미지 풀링, 스토리지 연결)
Reason 필드에 이유가 표시됨

# Running
실행중

# Terminated
컨테이너 실행이 완료됨
실패
Reason 필드에 이유가 표시됨



# 컨테이너의 재시작 정책 
컨테이너는 오류 발생 시 재시작을 하기위한 재시작 정책을 가지고 있다
지수 백오프 지연 시간 -> 무차별 공격 방어 

# .spec.restartPolicy 재시작 정책
# Always
종료,실패시 항상 재시작 -> 기본값

# Onfailure
실패시 재시작

# Never
재시작 하지 않음