Kubernetes - ReplicaSet

choko's avatar
Jun 29, 2024
Kubernetes - ReplicaSet
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
notion image
template을 보면, Pod 설정 파일과 동일한 것을 알 수 있다.
 

ReplicaSet 동작 방식

 
notion image
  1. ReplicaSet Controller는 ReplicaSet조건을 감시하면서 현재 상태와 원하는 상태가 다른 것을 체크
  1. ReplicaSet Controller가 원하는 상태가 되도록 Pod을 생성하거나 제거
  1. Scheduler는 API서버를 감시하면서 할당되지 않은 Pod이 있는지 체크
  1. Scheduler는 할당되지 않은 새로운 Pod을 감지하고 적절한 노드에 배치
  1. 이후 노드는 기존대로 동작
 
 

스케일 아웃

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

Tom의 TIL 정리방