Pod

Monday·2024년 6월 10일
post-thumbnail

Pod

쿠버네티스에서 배포할때 사용하는 가장 작은 단위

Docker는 컨테이너를 만드는데, k8s는 컨테이너를 만드는건 맞지만 Pod을 통해서 컨테이너를 관리한다.
Pod 안에 컨테이너가 존재하는 것이다.
Pod 안에는 보통 컨테이너 하나가 있긴한데 여러개를 포함할 수도 있긴 하다.

생성 과정

Scheduler

  • 할당되지 않은 Pod이 있는지 API Server를 통해 감시한다
  • 할당되지 않은 Pod이 있다면 적절한 Node에 할당한다

Kubelet

  • Node에 설치되어 있다
  • 자기 Node에 할당된 Pod이 있는지 확인한다
  • 있다면 컨테이너를 생성한다
  • 자신에게 할당된 Pod의 상태를 API Server에 전달한다

Yaml을 이용한 설정

run 명령어를 통해서 Pod을 생성하거나 할 수 있지만
리소스 설정이 복잡해지고 설정 정보를 관리하기 어렵기 때문에 잘 안쓴다.

대신 Yaml 파일을 통해서 설정 정보를 관리한다.

필수적인 항목

apiVersion

  • 버전에 따라 다름

kind

  • Pod, ReplicaSet 같은 종류에 대한 정보

metadata

  • 리소스에 대한 정보
  • name, label 같은 정보

spec

  • 종류에 따라 다르다
  • Pod 이면 컨테이너에 대한 정보 설정 등

컨테이너 상태 모니터링

컨테이너로 어떤 서버를 실행을 하면, 컨테이너는 생성 되어도 내부적으로 서버가 아직 실행이 덜 되었을 수도 있다.
이 상태에서 접속하게 되면 에러가 발생할 것이다.
Pod에서는 서비스가 준비 되었다 라는 것을 체크할 수 있는 기능을 제공한다.

livenessProbe

컨테이너가 정상적으로 동작하는지 주기적으로 체크하고,
이상이 있으면 컨테이너를 재시작한다

readinessProbe

컨테이너가 준비되었는지 체크하고, 준비되지 않았다면 Pod으로 들어오는 요청을 막는다

Pod이 10개인데 5개가 준비가 안되었다고 하면, 준비된 5개로만 요청을 보낸다

livenessProbe + readinessProbe

실제 서비스에서는 보통 둘 다 같이 작용한다
정상적으로 서버가 준비되었을때 요청을 받고, 이상이 있으면 재시작 한다

다중 컨테이너

보통 한 Pod에 하나의 컨테이너만 존재하지만, 여러개의 컨테이너가 존재하기도 한다

같은 Pod에 속한 컨테이너들은 네트워크를 localhost로 공유하고, 동일한 디렉토리를 공유할 수 있다

profile
차근차근 꾸준히

0개의 댓글