[CKAD] 멀티 컨테이너 파드

HongSeokChoi·2025년 9월 3일

ckad

목록 보기
9/14

멀티 컨테이너 파드란?

여러 개의 컨테이너가 하나의 파드 내에서 동일한 네트워크, 스토리지, 라이프사이클을 공유하며 동작하는 구조


특징

  • 동일 라이프사이클: 한 번에 생성/삭제.

  • 네트워크 공유: localhost에서 컨테이너들끼리 통신.

  • 스토리지 공유: 동일 볼륨을 사용.

  • 설정: spec.containers 배열을 통해 정의.


모놀리식 애플리케이션 vs 멀티 컨테이너 파드

구분모놀리식 애플리케이션멀티 컨테이너 파드
구조하나의 큰 애플리케이션하나의 포드 내 여러 컨테이너
개발·배포전체 수정/배포 필요개별 컨테이너 독립 개발/배포
확장성전체 단위 확장컨테이너 단위 확장
라이프사이클하나의 실행 단위각 컨테이너 동일 라이프사이클 공유
네트워크/스토리지내부 모듈 통합 구조localhost 공유, 동일 볼륨 공유
장점단순 구조, 초기 개발 용이유연한 확장성, 독립적 관리 가능

1. 공동 배치된 컨테이너 (Co-located Containers)

  • 특징: 동일 파드에서 여러 컨테이너 실행. 순서 제어 없음

  • 사용 예시: 웹 서버 + 메인 앱

  • 장점: 간단

  • 단점: 시작 순서 제어 불가

2. 초기화 컨테이너 (Init Containers)

  • 특징: 메인 앱 시작 전 실행되는 초기화 작업

  • 사용 예시: DB 준비, API 서비스 체크

  • 장점: 순서 제어 가능

  • 단점: 한 번만 실행됨

3. 사이드카 컨테이너 (Sidecar Containers)

  • 특징: 메인 앱과 함께 실행되는 보조 컨테이너

  • 사용 예시: 로그 수집기, 프록시

  • 장점: 주 앱과 함께 실행되어 보조 작업 처리

  • 단점: 설계 복잡


예시 코드

공동 배치된 컨테이너

apiVersion: v1
kind: Pod
metadata:
  name: colocated-pod
spec:
  containers:
    - name: web
      image: nginx:alpine
      ports:
        - containerPort: 80
    - name: app
      image: busybox
      command: ["sh", "-c", "sleep 3600"]

초기화 컨테이너

apiVersion: v1
kind: Pod
metadata:
  name: init-pod
spec:
  initContainers:
    - name: wait-db
      image: busybox
      command: ["sh", "-c", "until nc -z db.example.com 5432; do echo waiting; sleep 2; done"]
  containers:
    - name: app
      image: busybox
      command: ["sh", "-c", "sleep 3600"]

사이드카 컨테이너

apiVersion: v1
kind: Pod
metadata:
  name: sidecar-pod
spec:
  volumes:
    - name: logs
      emptyDir: {}
  containers:
    - name: sidecar
      image: busybox
      volumeMounts:
        - name: logs
          mountPath: /logs
    - name: app
      image: busybox
      volumeMounts:
        - name: logs
          mountPath: /logs

그렇다면 언제 사용해야 됨?

  • 서로 독립적으로 배포/확장이 필요한 서비스를 한 파드에 넣지 말아야 함

  • 보안이나 자원 격리가 필요한 경우는 분리해야 함

profile
Network/Cloud

0개의 댓글