2026. 2. 21. 19:54ㆍk8s
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은 기록으로 남는다.
'k8s' 카테고리의 다른 글
| 🐤 Kubernetes Canary Deployment 완전 정리 (0) | 2026.02.21 |
|---|---|
| 🔁 Kubernetes Deployment Rollout 완전 정리 (0) | 2026.02.21 |
| 🏷 Kubernetes Deployment에서 Label로 엮이는 구조 이해하기 (0) | 2026.02.21 |
| 🚫 Kubernetes Taint & Toleration 완전 정리 (0) | 2026.02.21 |
| 📝 Kubernetes Annotation 완전 정리 (0) | 2026.02.21 |