Cloud, Kubernetes

[Kubernetes] Pod 와 Container

준몽쓰 2025. 5. 5. 00:40

Pod는 한 개 이상의 리눅스 컨테이너로 구성된다. 애플리케이션 종류에 따라서 한 애플리케이션이 여러 개의 컨테이너로 구성되게 개발하는 경우도 많다. 이 때 이 컨테이너들을 하나의 Pod에 묶어서 쿠버네티스에 실행을 명령할 수도 있고, 각각 다른 Pod로 만들어 여러 개의 Pod들을 쿠버네티스에 실행시켜달라고 명령할 수도 있다. 두 가지 방법 모두 사용되고 있는 개발 방식으로 각 장단점이 존재하기에 자신의 애플리케이션에 어울리는 방식으로 개발해야한다.

 

Pod와 Container 관계

Pod 내 컨테이너는 크게 3가지이다. 네트워크 네임스페이스, IPC 네임스페이스, 스토리지를 공유한다. 그림과 같이 하나의 Pod에는 기본적으로 하나의 private IP 주소가 부여된다. Pod 내 컨테이너들은 컨테이너가 속한 Pod의 IP 주소를 이용해 접근할 수 있으며, Pod 내에 여러 컨테이너가 동시에 존재할 경우 이들간의 구별은 포트(port)를 통해서 이루어진다. IPC 네임스페이스를 공유하기에 같은 Pod 내 컨테이너들끼리는 IPC 통신할 수도 있다. 또한 Pod 내 컨테이너들에게만 공유되는 공유 스토리지를 지정할 수  있다.

 

Pod들간의 통신은 Pod의 private IP 주소를 통해서 이루어진다(REST API 등, 외부 사용자가 Pod에 접근하기 위해서는 Serivce라는 쿠버네티스 리소스를 통해 접근하여야 한다.)

 

Pod 내 여러 컨테이너가 함께 포함되는 경우는 한 기능을 여러 컨테이너로 구현하거나, 메인 기능이외에 부가적인 기능을 같이 사용하는 경우이다. Pod 내 여러 컨테이너들을 동시에 사용할 경우 컨테이너는 위의 자원들을 공유하여 사용할 수 있기에 더욱 편리한 개발이 가능하다. 다만 Pod 하나에 에러가 발생하면 그 Pod 내 컨테이너들 모두 재시작되어야 한다거나, 컨테이너 이미지 수정이 필요한 경우에 Pod 전체를 종료시키고 새로 만들어야 하기에 개발 과정 복잡해진다.

 

Pod의 생명주기와 Pod 내 컨테이너들의 생명주기가 같진 않다. 컨테이너 하나에 문제가 발생한다면 그 컨테이너만 재실행하면 되지 Pod 자체를 재실행할 필요는 없다. 반대로 Pod에 문제가 발생한다면 Pod에 포함된 모든 컨테이너가 재실행된다.

 

 

'Cloud, Kubernetes' 카테고리의 다른 글

[Kubernetes] Pod의 개념과 필요성  (0) 2025.05.03