

여러 개의 컨테이너가 하나의 파드 내에서 동일한 네트워크, 스토리지, 라이프사이클을 공유하며 동작하는 구조
동일 라이프사이클: 한 번에 생성/삭제.
네트워크 공유: localhost에서 컨테이너들끼리 통신.
스토리지 공유: 동일 볼륨을 사용.
설정: spec.containers 배열을 통해 정의.
| 구분 | 모놀리식 애플리케이션 | 멀티 컨테이너 파드 |
|---|---|---|
| 구조 | 하나의 큰 애플리케이션 | 하나의 포드 내 여러 컨테이너 |
| 개발·배포 | 전체 수정/배포 필요 | 개별 컨테이너 독립 개발/배포 |
| 확장성 | 전체 단위 확장 | 컨테이너 단위 확장 |
| 라이프사이클 | 하나의 실행 단위 | 각 컨테이너 동일 라이프사이클 공유 |
| 네트워크/스토리지 | 내부 모듈 통합 구조 | 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
서로 독립적으로 배포/확장이 필요한 서비스를 한 파드에 넣지 말아야 함
보안이나 자원 격리가 필요한 경우는 분리해야 함