- 일정 갯수의 Pod를 유지하는 컨트롤러
- ReplicaSet도 마찬가지로 YAML 파일로 작성하여 파드와 컨테이너까지 생성할 수 있다
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: replicaset-nginx
spec:
replicas: 3
selector:
matchLabels:
app: my-nginx-pods-label
template:
metadata:
name: my-nginx-pod
labels:
app: my-nginx-pods-label
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
- spec.replicas는 유지할 Pod의 갯수를 의미
- spec.template은 Pod를 생성하는 템플릿, 이 정보를 기반으로 Pod와 컨테이너들을 생성한다
- 파일 작성 후 실행하면 ReplicaSet과 Pod가 생성된 것을 확인할 수 있으며, 파일을 수정하여 다시 실행할 경우 새로 생성하지 않고 기존 리소스를 수정하여 반영한다
원리?
- ReplicaSet과 Pod가 연결된 것처럼 보이지만, 느슨한 연결, loosely coupled라고 한단다
- 이 느슨한 연결의 주체는 라벨인데, 위 예시에서 ReplicaSet과 Pod의 라벨이 동일한 것을 알 수 있다
- ReplicaSet에선 이 라벨 네이밍을 보고 라벨을 가진 Pod의 갯수로 유지하도록 컨트롤한다고 함, 이는 동일한 라벨을 가진 Pod를 삭제하면 동일한 라벨의 Pod가 새로 생성이 되고, 삭제도 마찬가지
- 이미 생성한 Pod를 수정하여 라벨 정보를 지우면 ReplicaSet에선 해당 Pod는 관리대상으로 간주하지 않고, 새로운 Pod를 생성해버린다
- ReplicaSet은 Pod를 생성하는 것도 있지만, 일정 갯수의 Pod를 유지하는 것이 목적이다