Pod란
- 하나 이상의 컨테이너의 그룹이며 이 그룹은 같은 스토리지와 네트워크를 공유하고, 컨테이너 구동방식에 대한 동일한 명세를 갖는다.
- 파드는 공유 네임스페이스와 공유 파일시스템 볼륨이 있는 도커 컨테이너 그룹과 비슷하다
- 일반적으로는 파드를 직접 만들지 않으며, deployment, job, daemonset 등 워크로드 리소스를 사용하여 생성한다.
- 컨트롤러는 워크로드 리소스에 기술된 명세에 따라, 파드 장애 시 복제 및 롤아웃과 자동 복구를 처리한다
lifecycle
Pod의 lifecycle
- Pending: 파드 내 하나 이상의 컨테이너가 실행되지 않은 상태. 여기에는 파드가 스케쥴링 되기 이전 까지의 시간 뿐만 아니라 아니라 이미지 pull 시간도 포함된다.
- Running: 파드가 노드에 바인딩되었고, 모든 컨테이너가 생성되었다. 적어도 하나의 컨테이너가 아직 실행 중이거나, 시작 또는 재시작 중에 있다.
- Succeeded: 파드에 있는 모든 컨테이너들이 성공적으로 종료되었다.
- Failed: 파드에 있는 모든 컨테이너가 종료되었고, 적어도 하나 이상의 컨테이너가 실패로 종료되었다.
- Unknown:어떤 이유에 의해서 파드의 상태를 얻을 수 없다. 이 단계는 일반적으로 노드와의 통신 오류로 인해 발생한다.
Container의 lifecycle
- Waiting: 컨테이너를 시작하는데 필요한 작업(image pull 등)을 실행하고 있는 중이다.
- Running: 컨테이너가 문제없이 실행되고 있는 상태다.
- Terminated: 컨테이너는 실행을 시작한 다음 완료가 되었거나 실패했다. kubectl 을 사용하여 컨테이너가 Terminated 인 파드를 쿼리하면, 이유와 종료 코드 및 컨테이너의 실행 기간에 대한 시작과 종료 시간이 표시된다.