🔁 Kubernetes Deployment에서 ReplicaSet이 여러 개 보이는 이유

2026. 2. 21. 19:54k8s

Deployment를 운영하다 보면 이런 상황을 볼 수 있다.

kubectl get rs -n test

출력:

NAME               DESIRED   CURRENT   READY   AGE
nginx-568bb48b8c   2         2         2       2m58s
nginx-584b4f6d78   0         0         0       14m

ReplicaSet이 두 개 존재한다.

이건 문제가 아니라 정상적인 롤링 업데이트 과정의 결과다.


📌 각 컬럼 의미

컬럼 의미
DESIRED 원하는 Pod 개수
CURRENT 현재 생성된 Pod 수
READY Ready 상태 Pod 수
AGE ReplicaSet 생성 시점

🔎 현재 상태 해석

🔹 nginx-568bb48b8c

  • 현재 활성 ReplicaSet
  • 2개의 Pod 운영 중
  • 모두 Ready 상태
  • 최근 생성됨

🔹 nginx-584b4f6d78

  • 이전 ReplicaSet
  • replicas 0
  • 현재 사용 안 함
  • 과거 버전

📦 왜 ReplicaSet이 2개인가?

Deployment는 내부적으로 ReplicaSet을 생성해서 Pod를 관리한다.

Deployment가 생성되면:

Deployment → ReplicaSet → Pod

구조가 만들어진다.


🔁 업데이트가 발생하면 어떻게 될까?

예를 들어:

  • 이미지 버전 변경
  • 환경변수 수정
  • 리소스 설정 변경

이 발생하면 Kubernetes는:

1️⃣ 새로운 ReplicaSet 생성
2️⃣ 새 ReplicaSet이 Pod 생성
3️⃣ 기존 ReplicaSet은 점점 줄어듦
4️⃣ 기존 ReplicaSet은 replicas=0 상태로 남음

즉, 새로운 ReplicaSet이 교체된다.


📊 구조 그림으로 이해하기

Deployment
   │
   ├── ReplicaSet A (old) → 0 pods
   │
   └── ReplicaSet B (new) → 2 pods

이전 ReplicaSet은 삭제되지 않고 유지된다.


📌 왜 이전 ReplicaSet을 유지할까?

이유는 단 하나다.

Rollback(롤백)을 위해서

Deployment는 과거 상태로 되돌릴 수 있다.

kubectl rollout history deployment nginx -n test

📌 다시 업데이트하면?

또 다른 ReplicaSet이 생성된다.

시간이 지날수록 ReplicaSet이 여러 개 쌓일 수 있다.


📌 정상인가?

✔ ReplicaSet이 여러 개 보이는 것은 정상
✔ 활성 ReplicaSet은 DESIRED > 0
✔ 이전 것들은 DESIRED=0

문제가 아니다.


📌 만약 정리하고 싶다면?

Deployment에는 revision history를 제한하는 옵션이 있다.

spec:
  revisionHistoryLimit: 2

이 값을 줄이면 오래된 ReplicaSet은 자동 삭제된다.


🎯 한 줄 정리

Deployment에서 ReplicaSet이 여러 개 보이는 이유는
롤링 업데이트와 롤백을 지원하기 위한 정상 동작이다.

현재 활성 ReplicaSet만 Pod를 운영하며
이전 ReplicaSet은 기록으로 남는다.