상세 컨텐츠

본문 제목

Kubernetes 핵심 개념 정리 - Container, Pod, Deployment, StatefulSet

개발공부/Kubernetes

by Dal_pang 2026. 2. 22. 16:44

본문

쿠버네티스를 처음 공부할 때 가장 먼저 마주치는 개념들이다.
이 네 가지의 관계를 이해하면 쿠버네티스의 전체 구조가 보이기 시작한다.

 


개념 관계도

Container → Pod → Deployment  (Stateless 앱)
                → StatefulSet (Stateful 앱)

상위 개념이 하위 개념을 관리하는 계층 구조다.


1. Container

컨테이너는 앱 코드 + 라이브러리 + 런타임을 하나로 묶은 실행 단위다. Docker가 대표적인 컨테이너 런타임이다.

쿠버네티스는 컨테이너를 직접 다루지 않고, Pod라는 단위를 통해서 관리한다.


2. Pod

Pod는 쿠버네티스에서 배포 가능한 가장 작은 단위다. 1개 이상의 컨테이너를 묶은 그룹이다.

특징

  • 같은 Pod 안의 컨테이너는 같은 IP를 공유 (localhost로 서로 통신 가능)
  • 같은 Pod 안의 컨테이너는 같은 볼륨을 공유 가능
  • 항상 같은 노드에 스케줄링됨

일반적인 사용 패턴

보통은 컨테이너 1개 = Pod 1개로 사용한다.
단, 로그 수집기처럼 메인 앱을 보조하는 사이드카 패턴에서는 여러 컨테이너를 하나의 Pod에 담기도 한다.

⚠️ 주의사항

Pod를 단독으로 생성하면 Pod가 죽었을 때 자동으로 재시작되지 않는다.
실제 운영에서는 Pod를 직접 만들지 않고, 아래의 Deployment나 StatefulSet을 통해 관리한다.


3. Deployment

Stateless 앱을 관리하는 가장 일반적인 방법이다.

특징

  • 원하는 Pod 수(replicas)를 선언하면 항상 그 수를 유지
  • Pod가 죽으면 자동으로 재생성
  • Rolling UpdateRollback 지원
  • Pod 이름에 랜덤 해시가 붙음 (예: my-app-7d4b9c-xk2lp)

예시

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3   # Pod 3개를 항상 유지
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: my-app:latest

언제 사용할까?

웹 서버, API 서버처럼 어떤 Pod가 요청을 받아도 상관없는 앱에 사용한다.
즉, 각 Pod가 동일한 역할을 하고 상태를 공유하지 않을 때 적합하다.

- Deployment의 ReplicaSet에 대해서는 이후에 다룰것.


4. StatefulSet

Stateful 앱을 관리하기 위한 컨트롤러다.

Deployment와의 차이점

항목 Deployment StatefulSet

Pod 이름 랜덤 (app-7d4b-xxx) 순서 고정 (app-0, app-1, app-2)
배포 순서 동시에 순서대로 (0 → 1 → 2)
볼륨 공유 가능 Pod마다 개별 볼륨
네트워크 ID 재시작 시 변경 고정 DNS 유지

언제 사용할까?

MySQL, PostgreSQL, Redis, Kafka, Elasticsearch처럼
각 인스턴스가 고유한 역할과 상태를 가지는 앱에 사용한다.

예를 들어 MySQL Master-Replica 구성에서 mysql-0은 항상 Master,
mysql-1, mysql-2는 항상 Replica 역할을 유지해야 한다.
이런 경우 Pod 이름이 바뀌면 안 되기 때문에 StatefulSet을 사용한다.


정리

Container Pod Deployment StatefulSet

역할 실행 단위 배포 최소 단위 Stateless 관리 Stateful 관리
재시작 - ❌ 자동 재시작 없음 ✅ 자동 재시작 ✅ 자동 재시작
대표 사용처 - 사이드카 패턴 웹서버, API DB, 메시지 큐

 

728x90

관련글 더보기