개발 창고/Server

리소스 - Part1: 레플리카셋(ReplicaSet)

Royzero 2025. 7. 31. 22:00
반응형

들어가며: Pod를 안정적으로 운영하는 방법

Kubernetes에서 Pod는 일시적으로 종료되거나 재시작될 수 있는 단위입니다.
운영 환경에서는 지정된 수의 Pod가 항상 실행 중이어야 애플리케이션의 가용성을 보장할 수 있습니다.
이를 자동으로 관리하는 리소스가 바로 ReplicaSet입니다.

이번 글에서는 다음 내용을 다룹니다.

  • ReplicaSet이란?
  • ReplicaSet과 Pod의 관계
  • ReplicaSet YAML 작성법
  • Pod 개수를 조절하는 방법(스케일링)
  • Deployment와의 차이점

목차 (Table of Contents)

  1. ReplicaSet이란?
  2. ReplicaSet의 핵심 기능
  3. ReplicaSet vs Deployment
  4. ReplicaSet YAML 구조
  5. ReplicaSet 생성 및 확인
  6. ReplicaSet 스케일링
  7. 실습 예제
  8. FAQ (Answer Engine Optimization)
  9. 핵심 요약
  10. 마무리

1. ReplicaSet이란?

ReplicaSet은 지정한 수의 Pod 복제본(Replica)이 항상 실행되도록 보장하는 Kubernetes 리소스입니다.
Pod가 비정상 종료되거나 노드 장애가 발생하면 ReplicaSet이 새로운 Pod를 자동으로 생성합니다.


2. ReplicaSet의 핵심 기능

  • 자동 복구(Self-healing): Pod가 죽으면 자동 재생성
  • 스케일링: replicas 값을 조절해 Pod 개수를 동적으로 변경
  • 라벨 기반 관리: 특정 라벨을 가진 Pod만 관리

3. ReplicaSet vs Deployment

  • ReplicaSet: Pod의 개수를 보장하는 리소스
  • Deployment: ReplicaSet을 관리하면서 롤링 업데이트, 버전 관리 등의 고급 기능 제공

즉, 운영 환경에서는 Deployment를 주로 사용하고, ReplicaSet은 Deployment의 하위 개념입니다.


4. ReplicaSet YAML 구조

예시 YAML:

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: my-replicaset
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:latest
          ports:
            - containerPort: 80

주요 필드:

  • replicas: 원하는 Pod 복제본 개수
  • selector: 관리할 Pod 라벨 지정
  • template: Pod 템플릿 정의

5. ReplicaSet 생성 및 확인

ReplicaSet 생성:

kubectl apply -f replicaset.yaml

상태 확인:

kubectl get rs
kubectl get pods

6. ReplicaSet 스케일링

Pod 개수를 늘리거나 줄이려면:

kubectl scale rs my-replicaset --replicas=5

YAML 파일에서 replicas 값을 변경한 후 kubectl apply로 적용해도 됩니다.


7. 실습 예제

  1. ReplicaSet 생성

    kubectl apply -f replicaset.yaml
  2. Pod 삭제 후 복구 확인

    kubectl delete pod <pod-name>
    kubectl get pods

    삭제된 Pod가 다시 자동 생성되는 것을 확인할 수 있습니다.


8. FAQ (Answer Engine Optimization)

Q1. ReplicaSet과 ReplicationController의 차이는?
A. ReplicaSet은 **라벨 셀렉터(matchExpressions)**와 같은 더 유연한 셀렉터를 지원하며, ReplicationController의 개선 버전입니다.

Q2. 왜 Deployment 대신 ReplicaSet만 쓰는 경우가 있나요?
A. 단순히 Pod 수를 보장하는 기능만 필요할 때 ReplicaSet을 직접 사용할 수 있습니다.

Q3. Pod 개수가 지정 개수보다 많은 경우 ReplicaSet은 어떻게 하나요?
A. 필요 이상 Pod가 있으면 ReplicaSet이 초과 Pod를 종료시킵니다.


9. 핵심 요약

개념 설명
ReplicaSet Pod 복제본 수를 보장하는 리소스
스케일링 replicas 값을 조정하여 Pod 개수 관리
Deployment ReplicaSet을 포함해 롤링 업데이트 기능 제공
실습 포인트 Pod 삭제 시 자동 복구 확인

10. 마무리

ReplicaSet은 Kubernetes 애플리케이션의 가용성과 안정성을 유지하기 위한 필수 요소입니다.


반응형