Pod
을 단독으로 만들면 Pod
에 어떤 문제가 생겼을 때 자동으로 복구되지 않는다. -> HA(고가용성)
보장 못함
이러한 Pod
을 정해진 수만큼 복제하고 관리하는 것이 ReplicaSet
실행되는 Pod
개수에 대한 가용성을 보증, 지정한 Pod
개수만큼 실행될 수 있도록 관리한다.
(label
을 체크해서 원하는 수의 Pod
이 없으면 새로운 Pod
을 생성한다.)
label
을 기반으로하며, label
을 지정하면 해당 label
을 가진 모든 Pod
을 관리한다.
(label
이 겹치지 않게 주의 필요)
원하는 Pod
의 개수
생성할 Pod
의 명세
sudo vi echo-rs.yml
: yaml 파일 생성
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: [레플리카셋 이름]
spec:
replicas: 3
selector:
matchLabels:
app: echo # 'app: echo' 라는 라벨 이름 명시
tier: app
template:
metadata:
labels:
app: echo # 'app: echo' 라는 라벨 이름 지정
tier: app
spec:
containers:
- name: echo
image: [이미지 이름]
kubectl apply -f echo-rs.yml
: ReplicaSet 생성
kubectl get po,rs
: 리소스 확인
ReplicaSet Controller
는 ReplicaSet 조건
을 감시하면서 현재 상태와 원하는 상태가 다른 것을 체크ReplicaSet Controller
가 원하는 상태가 되도록 Pod
을 생성하거나 제거Scheduler
는 API 서버
를 감시하면서 할당되지 않는 Pod
이 있는지 체크Scheduler
는 할당되지 않는 새로운 Pod
을 감지하고 적절한 Node
에 배치Node
는 기존대로 동작 sudo vi nginx-rs.yml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
imgae: nginx:latest
kubectl apply -f nginx-rs.yml