Pod을 단독으로 만들면 Pod에 어떤 문제가 생겼을 경우 자동으로 복구되지 않는다.
→ 이러한 Pod을 정해진 수 만큼 복제하고 관리하는 것이 ReplicaSet 이다.
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: echo-rs
spec:
replicas: 1
selector:
matchLabels:
app: echo
tier: app
template:
metadata:
labels:
app: echo
tier: app
spec:
containers:
- name: echo
image: ghcr.io/subicura/echo:v1

template을 보면, Pod 설정 파일과 동일한 것을 알 수 있다.
ReplicaSet 동작 방식

ReplicaSet Controller
는 ReplicaSet조건을 감시하면서 현재 상태와 원하는 상태가 다른 것을 체크
ReplicaSet Controller
가 원하는 상태가 되도록Pod
을 생성하거나 제거
Scheduler
는 API서버를 감시하면서 할당되지 않은Pod
이 있는지 체크
Scheduler
는 할당되지 않은 새로운Pod
을 감지하고 적절한노드
에 배치
- 이후 노드는 기존대로 동작
스케일 아웃
ReplicaSet을 이용하면 손쉽게 Pod을 여러개로 복제할 수 있다.
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: echo-rs
spec:
replicas: 4 // Pod이 4개가 됨.
selector:
matchLabels:
app: echo
tier: app
template:
metadata:
labels:
app: echo
tier: app
spec:
containers:
- name: echo
image: ghcr.io/subicura/echo:v1
- ReplicaSet은 원하는 개수의 Pod을 유지하는 역할을 담당한다. label을 이용하여 Pod을 체크하기 때문에 label이 겹치지 않게 신경써서 정의해야 한다.
- 실전에서 ReplicaSet을 단독으로 쓰는 경우는 거의 없다. Deployment가 ReplicaSet을 이용하고 주로 Deployment를 사용.
Share article