Pod란?

쿠버네티스는 컨테이너를 개별적으로 배포하는 것이 아니라 Pod라는 단위로 컨테이너를 묶어서 관리하게 됩니다. 하나의 파드는 다수의 컨테이너를 가지고 있을 수 있는데, 왜 개별적으로 하나씩 컨테이너를 배포하지 않고 여러 개의 컨테이너를 Pod단위로 묶어서 배포하게 될까요? 이와 같은 이유에는 두 가지 특징이 있습니다.

파드는 쿠버네티스 플랫폼 상에서 최소 단위입니다. 쿠버네티스에서 배포를 생성할 때, 그 배포는 컨테이너 내부에서 컨테이너와 함께 파드를 생성합니다.

 

 

  1. Pod 내의 컨테이너는 IP와 Port를 공유합니다.
    즉 두개 이상의 컨테이너가 하나의 파드를 통해 배포되었을 때 localhost로 통신이 가능합니다.
  2. Pod내에 배포된 컨테이너 간에는 디스크 볼륨을 공유할 수 있습니다.
    최근 애플리케이션들은 실행할 때 애플리케이션만 올라가는 것이 아니라 로그 수집기와 같은 다양한 솔루션이 함께 배포되는 경우가 많습니다.

    특히 로그수집기 같은 경우에는 애플리케이션의 로그 파일을 읽어서 수집하기 때문에 애플리케이션과 로그 수집기를 다른 컨테이너로 배포하게 될 경우, 일반적으로는 컨테이너에 의해서 독립적인 환경으로 파일 시스템이 분리되기 때문에 로그 수집기가 애플리케이션에 배포된 컨테이너의 로그 파일을 읽는 것이 불가능하지만, 쿠버네티스의 경우 하나의 파드 안에서 컨테이너끼리 볼륨을 공유할 수 있기 때문에 다른 컨테이너의 파일을 읽어올 수 있습니다.

3. 컨테이너 이미지 버전 또는 사용할 특정 포트와 같이 각 컨테이너가 동작하는 방식에 대한 정보

 

아래의 이미지로 좀 더 자세히 살펴보도록 하겠습니다.

아래의 이미지는 worker node를 나타낸 이미지입니다. 노드의 구조를 살펴보면 node안에 여러 개의 pod가 있고, 그 안에 실질적으로 서비스를 수행하는 작은 container들이 동작하게 됩니다. 이때 애플리케이션과 볼륨이 하나의 pod안에 있음으로써 컨테이너끼리 볼륨을 공유할 수 있게 됩니다.

 

그 외에도 kubelet와 docker가 있는데, kubelet는 node에서 pod와 container를 관리하는 역할을 하고 docker는 k8s에서 기본적으로 사용하는 container runtime입니다.

 

 

노드

파드는 언제나 노드 상에서 동작합니다. 노드는 쿠버네티스에서 워커 머신을 말하며 클러스터에 따라 가상 또는 물리 머신일 수 있습니다. 각 노드는 컨트롤 플레인에 의해 관리됩니다. 하나의 노드는 여러 개의 파드를 가질 수 있고, 쿠버네티스 컨트롤 플레인은 클러스터 내 노드를 통해서 파드에 대한 스케쥴링을 자동으로 처리합니다. 

모든 쿠버네티스 노드는 다음과 같이 동작합니다.

  • Kubelet은, 쿠버네티스 컨트롤 플레인과 노드 간 통신을 책임지는 프로세스이며, 하나의 머신 상에서 동작하는 파드와 컨테이너를 관리합니다.
  • 컨테이너 런타임(도커와 같은)은 레지스트리에서 컨테이너 이미지를 가져와 묶여 있는 것을 풀고 애플리케이션을 동작시키는 책임을 맡습니다.

'쿠버네티스' 카테고리의 다른 글

쿠버네티스 - katacoda  (0) 2022.04.26
쿠버네티스란 무엇인가?  (0) 2022.04.25
GCP - Kubernetes Engine(GKE)  (0) 2022.03.22
minikube  (0) 2022.02.21
구글 쿠버네티스 엔진  (0) 2022.02.17

+ Recent posts