쿠버네티스 배포의 핵심, Deployment와 ReplicaSet 이해하기
앞선 글에서 Pod, Node, Cluster 같은 기본 구조를 살펴봤다.
이제부터는 실제로 쿠버네티스를 쓰면서 가장 자주 만나게 되는 개념으로 넘어간다.
바로 Deployment와 ReplicaSet이다.
쿠버네티스에서 애플리케이션을 배포한다고 할 때,
대부분의 경우 직접 Pod를 만들지는 않는다.
대신 Deployment를 정의하고, 나머지는 쿠버네티스에 맡긴다.
왜 Pod를 직접 만들지 않을까
처음 쿠버네티스를 접하면 이런 생각이 든다.
- “컨테이너 하나 띄우면 되는데 Pod만 만들면 되지 않나?”
- “굳이 Deployment까지 써야 하나?”
기술적으로는 가능하다.
하지만 운영 관점에서는 거의 의미가 없다.
Pod는 다음과 같은 특성을 가진다.
- 언제든지 사라질 수 있다
- 재시작되면 이름과 IP가 바뀐다
- 개수를 유지해주지 않는다
즉, Pod는 실행 단위일 뿐 관리 단위가 아니다.
이 역할을 맡는 것이 바로 Deployment다.
Deployment란 무엇인가
Deployment는 한 문장으로 정리하면 다음과 같다.
Deployment는 “이 애플리케이션을 이런 상태로 운영하겠다”라는 선언이다.
Deployment를 통해 다음을 정의한다.
- 어떤 이미지로 실행할지
- Pod를 몇 개 유지할지
- 업데이트 시 어떻게 교체할지

실제로 써보면 Deployment는
“Pod 관리 규칙 묶음”에 가깝다.
ReplicaSet은 어디서 등장할까
Deployment를 생성하면,
쿠버네티스 내부에서는 ReplicaSet이 함께 만들어진다.
ReplicaSet의 역할
- 지정된 개수의 Pod를 유지
- Pod가 죽으면 자동으로 새 Pod 생성
- 개수가 줄거나 늘어나면 즉시 조정


중요한 점은,
개발자가 ReplicaSet을 직접 다룰 일은 거의 없다는 것이다.
Deployment → ReplicaSet → Pod
이 구조를 이해하는 것이 핵심이다.
Deployment 하나로 가능한 것들
Deployment를 사용하면 다음과 같은 작업이 자연스럽게 가능해진다.
1. Pod 개수 유지
replicas: 3
이 한 줄만으로
- Pod가 3개보다 적으면 생성하고
- 많으면 줄인다
운영 중에 서버가 죽어도,
“왜 하나 줄었지?”를 신경 쓸 필요가 없다.
2. 무중단 배포 (Rolling Update)
이미지를 변경하면,
Deployment는 기존 Pod를 하나씩 내리고
새 Pod를 순차적으로 올린다.
실제로 써보면,
별다른 설정 없이도 기본적인 무중단 배포가 된다.
3. 롤백
새 버전이 문제가 있을 경우,
이전 상태로 되돌리는 것도 가능하다.
운영 환경에서 이 기능은 생각보다 자주 쓰인다.
Deployment는 선언형이라는 점이 중요하다
Deployment를 사용할 때의 핵심 사고방식은 이것이다.
- “이 Pod를 지금 당장 띄워라” ❌
- “항상 이런 상태여야 한다” ⭕
예를 들어,
- 웹 서버 5개 유지
- 특정 이미지 버전 사용
- 리소스 제한 적용
이 상태를 선언하면,
쿠버네티스가 현재 상태와 비교해 알아서 맞춘다.
실제로 운영해보면
사람이 개입할 일이 줄어든다는 점이 가장 큰 장점이다.
언제 Deployment를 쓰고, 언제 안 쓸까
Deployment가 적합한 경우
- 웹 서버, API 서버
- 무상태(stateless) 애플리케이션
- 수평 확장이 필요한 서비스
Deployment가 맞지 않을 수 있는 경우
⚠️ 다음과 같은 경우에는 다른 리소스를 고려한다.
- 데이터베이스처럼 상태가 중요한 경우 → StatefulSet
- 주기적으로 실행되는 작업 → Job / CronJob
Deployment는 범용적이지만,
모든 워크로드를 커버하지는 않는다.
정리하며
이번 글에서는 쿠버네티스 배포의 중심이 되는
Deployment와 ReplicaSet을 정리했다.
- Pod는 실행 단위
- ReplicaSet은 개수 유지 역할
- Deployment는 전체 배포 전략을 담당
이 구조를 이해하면,
이후에 나오는 오토스케일링, 무중단 배포, 롤백 개념도 훨씬 자연스럽게 이어진다.
다음 글에서는
Deployment와 자주 비교되는 리소스인
StatefulSet과 DaemonSet을 중심으로
“언제 어떤 워크로드를 써야 하는지”를 정리해보려 한다.
'infra' 카테고리의 다른 글
| 쿠버네티스 requests와 limits 개념 정리: 리소스 관리와 OOM 방지 (0) | 2026.02.06 |
|---|---|
| 쿠버네티스 Service와 Ingress 개념 정리: 외부 트래픽 흐름 이해하기 (0) | 2026.02.05 |
| 쿠버네티스 StatefulSet과 DaemonSet 차이점 정리: 언제 써야 할까 (0) | 2026.02.04 |
| 쿠버네티스 핵심 구성 요소 정리: Pod, Node, Cluster 이해하기 (0) | 2026.02.02 |
| 쿠버네티스란 무엇인가? 도커 다음 단계로 이해하는 기본 개념 (1) | 2026.02.01 |