
쿠버네티스에서 애플리케이션을 안정적으로 운영하기 위해서는
Pod를 일정 개수로 유지하고, 무중단으로 새 버전을 배포할 수 있는 구조가 필요하다.
이 역할을 담당하는 대표적인 리소스가 바로 ReplicaSet과 Deployment다.
ReplicaSet은 지정된 수의 Pod를 항상 일정하게 유지하는 역할을 한다.
즉, 사용자가 원하는 개수(예: 3개)로 Pod를 정의하면,
쿠버네티스가 실제 실행 중인 Pod의 수를 지속적으로 감시하고
부족하면 새로 만들고, 초과하면 제거한다.
이때 ReplicaSet은 Pod의 이름으로 직접 관리하지 않고,
label(라벨) 과 selector(선택자) 를 기준으로 Pod를 식별한다.
즉, 특정 label을 가진 Pod만 ReplicaSet의 관리 대상이 되며,
새로 생성되는 Pod에도 동일한 label이 붙어야 관리 범위 안에 포함된다.
ReplicaSet은 크게 다음 세 부분으로 구성된다.
| 항목 | 설명 |
|---|---|
metadata | ReplicaSet의 이름 및 라벨 정보 |
spec.replicas | 유지할 Pod의 개수 |
spec.selector | 어떤 Pod를 관리할지 구분하는 기준(라벨 선택자) |
spec.template | 새로 만들 Pod의 기본 템플릿(라벨, 이미지, 포트 등 정의) |
replicas: 3 으로 정의selector 조건에 맞는 Pod를 감시결국 ReplicaSet은 label과 selector를 기준으로 Pod를 그룹화하고,
그 그룹 내에서 지정된 개수를 자동으로 유지하도록 동작한다.
Deployment는 ReplicaSet을 기반으로 버전 관리와 롤링 업데이트 기능을 추가한 리소스다.
즉, ReplicaSet을 직접 다루지 않아도 애플리케이션의 배포·업데이트를 자동으로 처리한다.
| 필드 | 의미 |
|---|---|
metadata.name | Deployment 이름 |
spec.replicas | 유지할 Pod 개수 |
spec.selector.matchLabels | 관리할 Pod의 라벨 기준 |
spec.template | Pod 템플릿 (컨테이너 이미지, 포트 등) |
strategy | 업데이트 방식 (RollingUpdate 또는 Recreate) |
kubectl apply 실행| 구분 | ReplicaSet | Deployment |
|---|---|---|
| 주요 목적 | 지정된 수의 Pod 유지 | 배포 및 버전 관리 |
| Pod 생성/삭제 | 직접 정의된 템플릿 기준 | 내부 ReplicaSet 자동 관리 |
| 업데이트 | 수동 관리 | Rolling Update 지원 |
| 롤백 기능 | 없음 | 이전 버전으로 되돌리기 가능 |
| 실제 운영에서의 사용 | 보조 리소스 | 주로 Deployment 사용 |