반가운사람2 2022. 8. 23. 13:52
반응형

Kubernetes Object 중 다룰 Object에 유형은 ReplicaSet입니다!

ReplicaSet은 무엇일까요? 왜 사용할까요? 꼭 필요할까요?

이제 한번 ReplicaSet을 한번 알아볼까요!!

 

레플리카셋

레플리카셋의 목적은 레플리카 파드 집합의 실행을 항상 안정적으로 유지하는 것이다. 이처럼 레플리카셋은 보통 명시된 동일 파드 개수에 대한 가용성을 보증하는데 사용한다. 레플리카셋의

kubernetes.io

ReplicaSet이란

일정 개수의 Pod를 유지하는 Controller 입니다. 즉, Kubernetes의 기본 단위 핵심인 Pod는 여러 개의 컨테이너를 추상화한다음 하나의 애플리케이션으로 동작하도록 만드는 컨테이너 묶음이라고 생각하시면 됩니다.

ReplicaSet의 목적은 Replica Pod 집합의 실행을 항상 안정적으로 유지하는 것 입니다. 이처럼 ReplicaSet은 보통 명시된 동일 Pod 개수에 대한 가용성을 보증하는데 사용됩니다.

그렇지만 ReplicaSet을 Yaml에 Pod만 정의해서 생성하게 되면 생성된 Pod들의 LifeCycle은 오직 Kubernetes 사용자에 의해서만 관리될 수 있습니다. 즉, 한번 Yaml에 의해 생성하면 사용자가 직접 삭제 및 추가를 해야한다는 의미입니다.

ReplicaSet 작동 방식

ReplicaSet을 정희하는 필드는 획득 가능한 Pod를 식별하는 방법이 명시된 셀렉터, 유지해야하는 파드 개수를 명시하는 Replica의 개수, 그리고 Replica 수 유지를 위해 생성하는 신규 파드에 대한 데이터를 명시하는 Pod 템플릿을 포함합니다. 그러면 ReplicaSet은 필드에 지정된 설정을 충족하기 위해서 필요한 만큼 Pod를 만들고 삭제합니다. ReplicaSet이 새로운 Pod를 생성해야 할 경우, 명시된 pod 템플릿을 사용합니다.
ReplicaSet은 셀렉터를 이용해서 필요한 새 Pod를 식별합니다. 만약 Pod에 OwnerReference가 없거나 OwnerReference가 Controller가 아니고 ReplicaSet의 셀렉터와 일치한다면 ReplicaSet이 즉각 Pod를 가지게 될 것입니다.

Owner references란?
모든 종속 오브젝트는 소유하는 오브젝트를 가르키는 metadata.ownerReferences필드를 가지고 있습니다. 어떻게 알 수 있냐? 실습을 통해서 확인해드리겠습니다.

실습

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: frontend
  labels:
    app: guestbook
    tier: frontend
spec:
  # 케이스에 따라 레플리카를 수정한다.
  replicas: 3
  selector:
    matchLabels:
      tier: frontend
  template:
    metadata:
      labels:
        tier: frontend
    spec:
      containers:
      - name: php-redis
        image: gcr.io/google_samples/gb-frontend:v3

Node에 Pod 배포

kubectl apply -f frontend.yaml

#확인
kubectl get rs
kubectl describe rs/frontend

생성 된 것을 확인할 수 있습니다.

이제 위에서 한번 언급한 Owner references을 확인해보겠습니다!

kubectl get pods
kubectl get pods [[출력된 Pod Full Name]] -o yaml

ownerReferences 필드가 설정되어있는 것을 확인할 수 있습니다.

삭제!
kubectl delete -f frontend.yaml

이처럼 ReplicaSet이 생성된 것을 볼 수 있으며, 간단한 ReplicaSet의 특징? 의미를 다루는 게시물이었습니다 감사합니다.

반응형