티스토리 뷰

반응형

멀티컨테이너

쿠버네티스에서의 멀티컨테이너는 주로 '파드(Pod)'의 컨셉으로 이해됩니다. 파드는 쿠버네티스에서 배포 단위 중 하나이며, 하나 이상의 컨테이너로 구성될 수 있습니다. 여러 컨테이너를 하나의 파드로 묶는 이유와 그 특징, 그리고 사용 사례에 대해 자세히 알아보겠습니다.

 

https://kubernetes.io/docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/#creating-a-pod-that-runs-two-containers

 

파드(Pod)의 기본 개념

파드는 하나 이상의 컨테이너로 구성된 실행 단위입니다.
파드 내의 모든 컨테이너는 같은 네트워크 네임스페이스, IPC 네임스페이스, UTS 네임스페이스 등을 공유합니다. 이로 인해 같은 로컬호스트에서 통신하는 것처럼 서로 통신할 수 있습니다.
같은 파드 내의 컨테이너들은 동일한 저장소 볼륨(Volume)을 공유할 수 있습니다.


멀티컨테이너의 사용 사례

측면 컨테이너(Sidecar) 패턴: 메인 애플리케이션에 부차적인 기능을 제공하는 컨테이너. 예를 들면, 메인 애플리케이션의 로그를 수집하거나 설정을 동적으로 갱신하는 역할을 수행합니다.
어댑터(Adapter) 패턴: 메인 컨테이너의 출력을 변환해서 다른 시스템이나 서비스가 사용할 수 있는 형태로 제공합니다.
앰배서더(Ambassador) 패턴: 특정 네트워크 서비스를 로컬 포트에 연결하여 메인 컨테이너가 해당 서비스를 사용하게 합니다.


멀티컨테이너의 장점

  • 강력한 컴포지션: 각 컨테이너는 잘 정의된 단일 책임을 가질 수 있으며, 이를 통해 여러 컨테이너를 조합하여 복잡한 애플리케이션을 구성할 수 있습니다.
  • 재사용성: 특정 기능을 가진 컨테이너를 여러 파드에서 재사용할 수 있습니다.
  • 효율적인 리소스 사용: 여러 관련 컨테이너를 하나의 파드로 묶음으로써 리소스를 더 효율적으로 사용할 수 있습니다.

주의사항

파드 내에서 실행되는 컨테이너들은 긴밀하게 연결되어 있다는 것을 기억해야 합니다. 한 컨테이너가 실패하면 전체 파드가 재시작될 수 있습니다.
잘못된 설계는 파드의 컨테이너들 간의 과도한 결합을 초래할 수 있으므로, 컨테이너 간의 연관성과 의존성을 명확하게 이해하고 설계해야 합니다.
결론적으로, 쿠버네티스의 멀티컨테이너 패턴은 애플리케이션 구성 요소를 모듈화하고 재사용하며, 특정 기능을 효과적으로 구현하는 데 매우 유용합니다. 그러나 이를 잘 활용하기 위해서는 파드와 컨테이너의 관계 및 특징을 잘 이해하고 올바른 설계 접근 방식을 선택해야 합니다.

 

예시

apiVersion: v1
kind: Pod
metadata:
  name: two-containers
spec:

  restartPolicy: Never

  volumes:
  - name: shared-data
    emptyDir: {}

  containers:

  - name: nginx-container
    image: nginx
    volumeMounts:
    - name: shared-data
      mountPath: /usr/share/nginx/html

  - name: debian-container
    image: debian
    volumeMounts:
    - name: shared-data
      mountPath: /pod-data
    command: ["/bin/sh"]
    args: ["-c", "echo Hello from the debian container > /pod-data/index.html"]

 

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
링크
글 보관함