본문 바로가기

DevOps/쿠버네티스

쿠버네티스 Multi-container pod 종류 및 예제

Pod은 쿠버네티스에서 배포할 수 있는 최소 모델이다. Pod은 클러스터에서 프로세스로 실행된다.


Pod은 application container(혹은 containers), storage resource, unique IP, option 으로 이루어져 있다. Docker는 쿠버네티스에서 사용 가능한 가장 널리쓰이는 컨테이너이다.(다른 컨테이너 모델도 상용 가능)


Pod 모델 종류


1. 1개 컨테이너 - 1개 POD 모델

  "one-container-per-Pod"은 쿠버네티스에서 가장 널리 쓰이는 케이스.
  한개의 pod이 1개의 container을 감싸고 있으며, 쿠버네티스가 pod을 관리.


2. 2개 이상 컨테이너 - 1개 POD 모델

  2개 이상의 container가 리소스를 밀접하게 공유해야하는 상황에 쓰인다.

  하나의 컨테이너가 file을 제공해주면 "sidecar" 역할을 하는 컨테이너가 해당 file에 접근하는 개념이다. 이러한 방식으로 추상화, 캡슐화 된 pod은 reliable한 application동작으로 이끌거나 robust system으로 만드는 등 장점으로 승화시킨다.


(1) Sidecar container 모델

  sidecar 컨테이너는 pod 내부에 동작하는 "main" 컨테이너의 동작을 확장하기 위한 용도로 붙여져서 동작한다. 

  예를 들어, Nginx web server을 pod으로 동작한다고 가정하자. git을 통해 push하는 파일들을 곧바로 Nginx를 통해 보기 위해, git synchronizer을 sidecar로 붙인다면, 한개의 web server pod으로 무중단 웹서버 POD을 구축할 있다.


(2) Ambassador containers 모델

  Ambassador container는 main container와 localhost로 통신하기 위해 사용된다.



  Example 1 :  single master로만 동작하는 redis가 있다고 가정하자. "main" 컨테이너가 redis의 입출력에 대해 밀접히 관련하여 동작한다면 간단하게 "main" 컨테이너가 localhost로 pod내부의 redis에 연결하여 동작 할 수 있다.

    

  Example 2 : web, was로 이루어져 동작하는 application이 있다고 가정하자. 각기 다른 POD을 띄워 두개의 service를 통해 기존 non-container 방식으로 동작하는 web application으로 동작하게 할 수 있지만, 한개의 POD에 web container, was container를 띄우고 localhost를 참조하게 한다면, 간단한 web, was 통합 pod을 만들 수 있다.

  Ambassador container는 두가지 장점을 가진다.
   장점1. 다른 동작을 하는 container를 신규 pod으로 띄울 필요 없음.

   장점2. 단순히 localhost로 붙을 수 있어서 개발하기 편함.


(3) Adapter containers 모델

  Adapter container는 표준화, 정규화 된 output을 내기 위해 사용된다.

  예를 들어, N개의 각기 다른 application을 모니터링 하고 있다고 가정하자. "main" 컨테이너가 찍고 있는 로그가 모니터링에 적합하지 않을 수도 있다. 이때, Adapter container가 로그를 모니터링시스템에 알맞게 변형시켜 보낸다면, 효과적일 것이다. 이러한 모델은 Kubernetes Log architecture의 sidecar pattern(바로가기) 에서 응용된다.




출처 : 쿠버네티스 블로그 - Patterns for Composite Containers(https://kubernetes.io/blog/2015/06/the-distributed-system-toolkit-patterns/)

출처 : 쿠버네티스 document - Pod overview(https://kubernetes.io/docs/concepts/workloads/pods/pod-overview/)

출처 : MIRANTIS - Multi-containers pods(https://www.mirantis.com/blog/multi-container-pods-and-container-communication-in-kubernetes/)