[k8s] pod lifecycle
카테고리: k8s
태그: k8s
🎯파드 라이프사이클
파드는 pending 단계에서 시작해서, 파드를 구성하는 컨테이너 중 하나 이상이 OK로 시작하면 Running 단계를 통과하고, 그런 다음 파드의 컨테이너가 실패로 종료되었는지 여부에 따라 Succeded 또는 Failed 단계로 이동한다.
파드의 단계
파드의 status 필드는 단계(Phase)를 포함한다. 단계는 파드가 라이프사이클 중 어느 단계에 해당하는지 표현한다.
| Value | Description |
|---|---|
Pending |
파드가 쿠버네티스 클러스터에서 승인되었지만, 하나 이상의 컨테이너가 실행할 준비가 되지 않았다. 여기에는 파드가 스케줄되기 이전까지의 시간 뿐만 아니라 컨테이너 이미지 다운로드 시간도 포함된다. |
Running |
파드가 노드에 바인딩되었고, 모든 컨테이너가 생성되었다. 적어도 하나의 컨테이너가 아직 실행 중이거나, 시작 또는 재시작 중에 있다. |
Succeeded |
파드에 있는 모든 컨테이너들이 성공적오르 종료되었고, 재시작되지 않을 것이다. |
Failed |
파드에 있는 모든 컨테이너가 종료되었고, 하나 이상의 컨테이너가 실패로 종료되었다. 또는 노드가 죽거나 클러스터와 연결이 끊어지면, 쿠버네티스는 손실된 노드의 모든 파드를 Failed로 설정하는 정책을 적용한다. |
Unknown |
어떤 이유에 의해서 파드의 상태를 얻을 수 없다. 이 단계는 일반적으로 파드가 실행되어야 하는 노드와의 통신 오류로 인해 발생한다. |
파드가 삭제될 때 kubectl 커맨드에서
Terminating으로 표시되는 경우가 있다. 이 상태는 파드의 단계에 해당하지 않는다. 파드에는 gracefully 하게 종료되도록 시간이 주어진다. 그 기본값은 30초 이다. 만약 강제로 파드를 종료하고자 한다면--force플래그를 사용해야 한다.
컨테이너 재시작 정책
파드의 spec 에는 restartPolicy 필드가 있다. 사용 가능한 값은 Always, OnFailure, Never 이고 기본값은 Always 이다.
restartPolicy는 파드의 모든 컨테이너에 적용된다. 파드의 컨테이너가 종료되면, kubelet은 5분으로 제한되는 지수로 증가하는 백오프 지연(10초, 20초, 40초, …)으로 컨테이너를 재시작한다. 그리고 컨테이너가 10분 동안 아무런 문제없이 실행되면, kubelet은 해당 컨테이너의 백오프 타이머를 재설정한다.
📌출처
👍 개인 공부 기록용 블로그입니다. 오류나 조언이 있으시면 언제든지 댓글 혹은 메일로 남겨주시면 감사하겠습니다! 😄
댓글남기기