💡 ReplicaSet
- Pod을 관리하는 쿠버네티스 오브젝트
- 쿠버네티스에서 pod의 개수를 유지하는 역할을 하는 리소스
- ReplicaSet 은 실행되는 Pod 개수에 대한 가용성을 보증하며 지정한 Pod 개수만큼 항상 실행될 수 있도록 관리한다
- 예를 들어, 웹서버 nginx를 3개 띄우고 싶다 => ReplicaSet이 Pod 3개가 모두 살아 있는지 계속 감시하고, 하나가 죽으면 자동으로 다시 생성해준다. 너무 많으면 초과된 Pod은 삭제해준다
- ReplicaSet의 목적은 Replica Pod 집합의 실행을 항상 안정적으로 유지하는 것이다
- 이처럼 ReplicaSet 은 보통 명시된 동일 파드 개수에 대한 가용성을 보증하는데 사용한다
- ReplicaSet 을 정의하는 필드는 획득 가능한 Pod를 식별하는 방법이 명시된 Selector, 유지해야 하는 Pod 개수를 명시하는 Replica 개수, 그리고 Replica 수 유지를 위해 생성하는 신규 Pod에 대한 데이터를 명시하는 Pod Template을 포함한다.
- ReplicaSet 은 필드에 지정된 설정을 충족하기 위해 필요한 만큼 Pod를 만들고 삭제한다.
- ReplicaSet 이 새로운 Pod를 생성해야 할 경우, 명시된 Pod Template을 사용한다.
- ReplicaSet 은 Pod의 metadata.ownerReferences 필드를 통해 파드에 연결되며, 이는 현재 오브젝트가 소유한 리소스를 명시한다.
- ReplicaSet 이 가지고 있는 모든 Pod의 ownerReferences 필드는 해당 Pod를 소유한 ReplicaSet을 식별하기 위한 소유자 정보를 가진다.
- 이 링크를 통해 ReplicaSet 은 자신이 유지하는 Pod의 상태를 확인하고 이에 따라 관리한다.
- ReplicaSet 은 Selector를 이용해서 필요한 새 Pod를 식별한다.
- 만약 Pod에 OwnerReference가 없거나, OwnerReference가 컨트롤러(Controller) 가 아니고 ReplicaSet 의 Selector와 일치한다면 ReplicaSet 이 즉각 Pod를 가지게 될 것이다.
| ReplicaSet 을 사용하는 시기
- ReplicaSet 은 지정된 수의 Pod Replica가 항상 실행되도록 보장한다.
- 그러나 Deployment는 ReplicaSet 을 관리하고 다른 유용한 기능과 함께 Pod에 대한 선언적 업데이트를 제공하는 상위 개념이다.
- 별도의 사용자 정의(custom) 업데이트 오케스트레이션이 필요한 경우 또는 업데이트가 전혀 필요 없는 경우가 아니라면, ReplicaSet 을 직접 사용하기보다는 Deployment를 사용하는 것이 좋다
- 이는 ReplicaSet 오브젝트를 직접 조작할 필요가 없다는 것을 의미한다.
- Deployment를 이용하고 사양 부분에서 애플리케이션을 정의하면 된다.
🔶 ReplicaSet 생성
( ⚠️ 이전에 알아야할 것 ⬇️ )
2025.04.19 - [IT/Cloud & DevOps] - 클라우드 환경에서 쿠버네티스 클러스터 만들기
2025.04.18 - [IT/Cloud & DevOps] - 컨테이너 레지스트리란? GCP Artifact Registry 로 실습해보기
2025.04.21 - [IT/Cloud & DevOps] - Pod : 쿠버네티스에서 컨테이너 실행하는 방법
✅ yaml 파일 작성
📁 sample-replicaset.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: sample-replicaset
namespace: default
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.27.0
ports:
- containerPort: 80
- apiVersion: apps/v1 : 사용할 API 버전 (ReplicaSet은 apps/v1에서 관리된다)
- metadata : 리소스의 이름 등 메타 정보
- spec : 실제로 어떤 Pod을 몇 개 생성할지 정의
- replicas : ReplicaSet이 유지할 Pod 수 / 3개의 nginx Pod를 유지하겠다는 의미
- selector : 어떤 Pod를 이 ReplicaSet이 관리할지 지정
- app=nginx 라는 label을 가진 Pod들을 대상으로 관리한다
- template : 새로운 Pod을 만들 때의 템플릿 (Pod을 어떻게 만들지 정의)
- app: nginx : 위 selector.matchLabels 와 같아야 한다
- spec: containers : Pod 안에 들어갈 컨테이너 정의
- nginx:1.27.0 이미지를 사용
- 이 컨테이너는 80번 포트를 사용해서 웹서버로 동작한다
✅ 생성 및 확인
kubectl apply -f sample-replicaset.yaml

kubectl get replicasets
| DESIRED | 원하는 Pod 수 |
| CURRENT | 실제로 실행 중인 Pod 수 |
| READY | 정상적으로 준비된 Pod 수 |
kubectl get pods

✅ pod 임의로 하나 지워서 확인해보기
kubectl delete pod sample-replicaset-b4dhf

- 삭제해도 ReplicaSet이 감지해서 자동으로 새 Pod 생성한다
- 다시 3개 유지된다 → 자가 복구 확인
💡
- ReplicaSet : 정해진 수의 Pod을 항상 유지시켜주는 쿠버네티스 컨트롤러
- Pod이 사라지면 알아서 다시 생성한다
- selector & template : 어떤 Pod을 관리하고 어떤 Pod을 만들지 정의
- 실무에서는 주로 Deployment를 사용하지만, 그 내부에서 ReplicaSet이 작동한다
refer to
https://kubernetes.io/ko/docs/concepts/workloads/controllers/replicaset/
'IT > Cloud & DevOps' 카테고리의 다른 글
| GKE 노드풀과 클러스터 오토스케일러 (0) | 2025.04.24 |
|---|---|
| Kubernetes의 Node와 Pod, Pod의 리소스 설정 (Request, Limit) (0) | 2025.04.24 |
| Pod : 쿠버네티스에서 컨테이너 실행하는 방법 (0) | 2025.04.21 |
| 컨테이너 레지스트리란? GCP Artifact Registry 로 실습해보기 (0) | 2025.04.20 |
| 클라우드 환경에서 쿠버네티스 클러스터 만들기 (0) | 2025.04.19 |