ReplicaSet란?

ReplicaSet은 pods 복제 셋을 언제나 유지하는데 목적이 있다.


작동 방법

replicaset은 pods의 metadata.ownerReferences field를 통해 pods와 연결되고 자원이 누구 소유인지 특정한다.

replicaset은 새로운 pods를 selector를 사용하여 특정지으며 pod가 OwnerReference가 없거나 OwnerRefernce가 Controller가 아닐 때 ReplcaSet의 selector를 맞춘다.


언제 사용하는지? deployment가 replicaset을 관리하고 다양한 기능을 포함하는 상위 개념이므로 실제로 relicaset 객체를 생성할 필요는 없다.

deployment spec section에서 선언하여 사용한다.


example

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: frontend
  labels:
    app: guestbook
    tier: frontend
spec:
  # modify replicas according to your case
  replicas: 3
  selector:
    matchLabels:
      tier: frontend
  template:
    metadata:
      labels:
        tier: frontend
    spec:
      containers:
      - name: php-redis
        image: gcr.io/google_samples/gb-frontend:v3
  • ReplicaSet에서 .spec.template.metadata.labels 은 spec.selector와 반드시 일치해야 한다.


간단한 명령어

kubectl get rs : 현재 deploy된 replicaset을 가져온다.

kubectl describe rs/frontend : replcaset의 상세 정보를 가져온다.


출처

https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/