Pod을 단독으로 만들면 Pod에 어떤 문제(서버가 죽어서 Pod이 사라진다던가 하는)가 생겼을 때 자동으로 복구되지 않는다. 이러한 Pod을 정해진 수만큼 복제하고 관리하는 것이 ReplicaSet이다.

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

스크린샷 2024-03-01 오후 9.06.19.png

ReplicaSet은 label을 체크해서 원한수는 수의 Pod이 없으면 새로운 Pod을 생성한다.

정의 설명
spec.selector label 체크 조건
spec.replicas 원하는 Pod의 개수
spec.template 생성할 Pod의 명세

스크린샷 2024-03-01 오후 9.10.21.png

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