infra

쿠버네티스 Deployment와 ReplicaSet 개념 정리: 배포의 기본 구조

mirabo01 2026. 2. 3. 09:50

쿠버네티스 배포의 핵심, Deployment와 ReplicaSet 이해하기

앞선 글에서 Pod, Node, Cluster 같은 기본 구조를 살펴봤다.
이제부터는 실제로 쿠버네티스를 쓰면서 가장 자주 만나게 되는 개념으로 넘어간다.
바로 DeploymentReplicaSet이다.

쿠버네티스에서 애플리케이션을 배포한다고 할 때,
대부분의 경우 직접 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을 중심으로
“언제 어떤 워크로드를 써야 하는지”를 정리해보려 한다.