728x90
Pod의 생명주기와 재시작 정책 그리고 컨테이너 다음글에선 상태 진단을 위한 Probe에 대해서 알아보겠다.
Pod의 생명주기
pod의 생명주기는 네 가지의 단계로 구분이 되어진다.
PENDING
: 클러스터 내 파드가 승인이 되었지만 아직 컨테이너 내부가 시작되기 전이며 노드에 배치되지 않은 상태다.RUNNING
: 클러스터 내 파드가 승인되고 컨테이너가 시작되어 노드에 배치되어있는 상태다.SUCCEEDED
: 노드에 대한 유한한(정적인) 작업이 완료되었을때 나타내는 상태다. 노드를 종료할 때 나타내는 상태이며, 해당 작업을 정상적으로 마쳤다는 뜻이다.FAILED
: 노드에 대한 유한한(정적인) 작업이 완료되었을때 나타내는 상태다. 노드를 종료할 때 나타내는 상태이며, 해당 작업이 비정상 종료되었음을 의미한다.
이 외에도 특수한 경우에만 파드에 부여되는 상태 정보(.status.phase
)가 추가로 존재한다.
unknown
: 파드의 상태가 확인이 불가능할 경우다. 보통 노드 네트워크 문제로 발생한다.terminating
: 파드를 삭제시켰을 때 볼 수 있다. 일반적으로 파드는 삭제가되면 30초의 유예시간을 갖는다. 만약 이 유예시간없이 삭제시키고 싶다면 kubelet delete 옵션에 --force를 추가하면 된다.
파드의 생명 주기와 현재 상태는 kubelet이 주기적으로 모니터링한다. 이렇게 모니터링된 상태 정보는 kubectl get pods
의 출력 결과 중 STATUS
필드에서 볼 수 있다. 해당 파드 오브젝트의 .status.phase
필드에서도 확인 가능하며, 이때 필요한 명령어는 다음과 같다.
kubectl get pod <파드명> -o jsonpath='{.status.phase}'
Pod 재시작 정책
파드에 포함된 컨테이너에는 오류가 생겼을때 재시작하기 위한 정책을 가지고 있다.
이 정책은 3가지로 분류되며 spec.restartPolicy
를 통해 직접 부여할 수 있다.
Always
: 컨테이너가 정상/비정상 종료시 항상 재시작한다. defaultOnfailure
: 컨테이너가 비정상 종료시에만 재시작한다.Never
: 재시작하지 않는다.
컨테이너의 재시작 시도 주기는 최대 300초 한도로 10초 지수 단위로 진행된다.
10초후 20초후 40초후 80초후.. 이런식이다.
만약 재시작에 성공한 컨테이너가 10분 동안 이상 없이 구동 상태를 유지한다면 해당 지연 시간은 초기화된다.
728x90
'Server & Infra.' 카테고리의 다른 글
[K8s] QoS Classes (1) | 2024.03.13 |
---|---|
[K8s] Probe 알아보기 (2) | 2024.03.12 |
[K8s] Pod 알아보기 (0) | 2024.03.12 |
[K8s] 노드 컴포넌트 알아보자 (0) | 2024.03.12 |
[K8s] 컨트롤 플래인 알아보기 (0) | 2024.03.12 |