반응형
k8s에서 파드(pod)는 1개 이상의 컨테이너가 캡슐화 되어 클러스터 안에서 배포되는 가장 작은 단위의 객체를 의미한다. 실제 Docker 로고는 고래 이미지를 따와서 만들어졌고, 고래의(컨테이너) 떼를 일컫는 파드(pod)라는 명칭으로 불리게 되었다.
< Pod에 대하여 >
1. pod의 기본적인 특징
- 하나의 pod에는 하나 이상의 컨테이너가 포함된다. (1 Pod = N Containers)
- pod는 워커 노드 IP와 별개로 고유 IP를 할당 받으며, pod 내의 컨테이너들은 자신이 속한 pod IP를 공유한다.
- 동일 pod내의 컨테이너들은 해당 pod가 가진 스토리지(volume)을 공유한다.
- pod는 반영속적인 속성을 가지고 있다.
2. pod의 생명주기
- Pending : 클러스터 내 pod 생성이 승인되었지만 아직 워커 노드에 배치되지 않은 상태
- Running : 파드가 워커 노드에 배치되었고 내부 컨테이너도 모두 생성 완료된 상태
- Succeeded : 파드 내의 모든 컨테이너가 작업을 정상적으로 마치고 종료된 상태
- Failed : 파드 내의 컨테이너 중 하나 이상의 컨테이너가 비정상 종료된 상태
- Unknown/Terminating : Unknown은 파드 상태 확인이 불가능한 경우를 의미하며, Terminating은 파드를 삭제시킨 경우 나타남
(참고) Pending 상태가 지속되는 여러가지 상황
1. 배치 가능한 노드가 없어 스케줄링을 할 수 없는 경우
2. 이미지를 잘못 지정하여 이미지를 받지 못하는 경우
3. 컨테이너가 시작되었지만 아직 실행할 준비가 안된 경우
4. 볼륨에 문제가 있는 경우
3. pod 내부 컨테이너의 재시작 정책
pod 내부 컨테이너가 오류 생겼을 때, 재시작하는 방법은 대표적으로 아래 3가지가 있다.
- Always : 컨테이너가 정상/비정상 종료 시 항상 재시작 → 컨테이너가 항상 구동 중이여야 하는 옵션
- Onfailure : 컨테이너가 비정상 종료되었을 때만 재시작
- Never : 오류와 상관 없이 재시작을 하지 않음
4. pod 내부 컨테이너의 상태를 진단해주는 프로브(Probe)
프로브(Probe)는 kubelet에 의해 주기적으로 수행되는 진단을 의미하며, pod 안의 컨테이너 상태를 진단하여 컨테이너의 재시작 or 종료 필요 여부를 확인할 수 있도록 알려준다.
(1) 프로브 종류 3가지
아래 여러 방식을 함께 조합하여 사용 가능하며, 모든 프로브(Probe) 진단 결과가 Success이어야 한다.
- Liveness Probe : 컨테이너가 제대로 작동하고 있는지 확인 → 문제 발생 시 컨테이너 재기동
- Readiness Probe : 컨테이너가 트래픽을 받을 준비가 되었는지 확인
- Startup Probe : 컨테이너가 제대로 시작되었는지 확인
(2) 프로브의 컨테이너 진단 방식
컨테이너 진단을 통해 Success/Failure/Unknown 결과를 도출하고 Failure 반환 시 조치를 취하게 된다.
- HTTP 방식(HttpGet) : 컨테이너 IP에 대한 Http Get 요청으로 응답 상태 코드 확인 (200 ≤ 상태코드 < 400이면 정상)
- TCP 방식(TcpSocket) : 컨테이너 IP에 대한 Tcp 검사를 수행해서 포트가 활성화되어 있는지 확인
- Exec 방식 : 컨테이너 내부에서 지정된 명령어를 수행하여 종료 코드가 0인지 확인
참고 페이지
https://seongjin.me/kubernetes-pods/
반응형
'[기술공부] > Kubernetes' 카테고리의 다른 글
[k8s] 쿠버네티스 오브젝트 - service(서비스)에 대하여 (0) | 2024.04.13 |
---|---|
[k8s] 쿠버네티스 오브젝트란? (0) | 2024.04.13 |
[k8s] 쿠버네티스란? with 쿠버네티스 아키텍처 - (2) (37) | 2024.04.13 |
[k8s] 쿠버네티스란? with 쿠버네티스 아키텍처 - (1) (0) | 2024.04.13 |
[k8s] 도커와 쿠버네티스의 관계 (0) | 2024.04.13 |