[쿠버네티스] - ReplicaSet

chancehee·2023년 9월 14일
0

쿠버네티스

목록 보기
6/17
post-thumbnail

[ 개요 ]

Pod을 단독으로 만들면 Pod에 어떤 문제가 생겼을 때 자동으로 복구되지 않는다. -> HA(고가용성) 보장 못함
이러한 Pod을 정해진 수만큼 복제하고 관리하는 것이 ReplicaSet

[ ReplicaSet ]

실행되는 Pod 개수에 대한 가용성을 보증, 지정한 Pod 개수만큼 실행될 수 있도록 관리한다.
(label을 체크해서 원하는 수의 Pod이 없으면 새로운 Pod을 생성한다.)

[ spec.selector ]

label을 기반으로하며, label을 지정하면 해당 label을 가진 모든 Pod을 관리한다.
(label이 겹치지 않게 주의 필요)

[ spec.replicas ]

원하는 Pod의 개수

[ spec.template ]

생성할 Pod의 명세

[ ReplicaSet 만들기 ]

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 생성 분석 ]

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

[ 예제 : Nginx ReplicaSet 만들기 ]

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

출처
https://subicura.com/k8s/guide/replicaset.html#%E1%84%89%E1%85%B3%E1%84%8F%E1%85%A6%E1%84%8B%E1%85%B5%E1%86%AF-%E1%84%8B%E1%85%A1%E1%84%8B%E1%85%AE%E1%86%BA

0개의 댓글