IT용어위키


쿠버네티스 레플리카셋

ReplicaSet은 Kubernetes에서 일정 수의 동일한 파드(Pod) 복제본을 항상 유지하기 위해 사용되는 컨트롤러 오브젝트이다.

개요

ReplicaSet의 목적은 지정된 개수의 파드가 언제나 실행 중인 상태를 안정적으로 보장하는 것이다. 즉, 파드가 삭제되거나 장애가 발생하더라도 ReplicaSet이 자동으로 새 파드를 생성하여 선언된 복제 개수를 유지한다.

작동 방식

ReplicaSet은 단순한 설정이 아닌, Kubernetes 내부에서 실제로 실행되고 있는 컨트롤러 프로세스이다. 이 컨트롤러는 kube-controller-manager의 일부로 동작하며, 다음과 같은 방식으로 작동한다:

  • API Server에 등록된 ReplicaSet 오브젝트를 지속적으로 감시(watch)
  • 현재 클러스터 내에서 해당 ReplicaSet이 관리하는 파드 수를 확인
  • 선언된 복제 수(spec.replicas)와 실제 수를 비교
  • 부족하면 새 파드를 생성하고, 초과하면 삭제
  • 이 과정은 컨트롤 루프(control loop)로 항상 백그라운드에서 동작한다

즉, ReplicaSet은 단순히 "파드를 몇 개 만들겠다"는 선언만 하는 것이 아니라, 지속적으로 실행되며 클러스터 상태를 조정하는 실체 있는 컨트롤러이다.

구성 요소

ReplicaSet은 다음과 같은 설정을 기반으로 동작한다:

  • selector — ReplicaSet이 관리할 파드를 식별하는 라벨 셀렉터
  • replicas — 유지할 파드 복제본의 수
  • template — 새로 생성할 파드의 정의 (파드 템플릿)

이 설정에 따라, ReplicaSet은 현재 실행 중인 파드 수가 선언된 replicas 수와 일치하도록 파드를 생성하거나 삭제한다. ReplicaSet이 생성한 모든 파드는 metadata.ownerReferences를 통해 어떤 ReplicaSet이 소유자인지 표시된다.

예: ReplicaSet 매니페스트

다음은 nginx 컨테이너 3개의 복제본을 유지하는 ReplicaSet YAML 예시이다:

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

이 매니페스트를 적용하면, 클러스터 내에서 동일한 nginx 파드가 3개 생성되고, 하나가 사라지면 자동으로 보충된다.

활용 이유 및 장점

  • 고가용성 보장 — 파드의 복제본을 유지해, 하나의 파드가 실패해도 서비스 전체는 계속 유지됨
  • 부하 분산 및 수평 확장 — 여러 복제본을 통해 트래픽을 분산 처리할 수 있음
  • 자동 복구 및 셀프 힐링 — 노드 장애, 컨테이너 오류, 수동 삭제 등으로 파드가 사라져도 자동으로 보충됨

다른 리소스와의 관계

  • ReplicationController는 이전 세대의 유사한 컨트롤러였으며, ReplicaSet이 이를 대체함
  • 현재 대부분의 경우에는 직접 ReplicaSet을 정의하기보다는 Deployment 리소스를 사용함
Deployment는 내부적으로 ReplicaSet을 생성 및 관리하며, 롤링 업데이트, 롤백 등의 고급 배포 기능을 제공

사용 시 유의사항

  • ReplicaSet만 사용할 경우, 롤아웃/롤백 기능이 제공되지 않는다
  • selector / label 설정이 올바르지 않으면 의도치 않은 파드가 포함되거나, 관리 대상 파드를 놓칠 수 있음
  • 상태 저장(stateful) 애플리케이션에는 StatefulSet 사용이 일반적임

같이 보기

각주


  출처: IT위키 (IT위키에서 최신 문서 보기)

  * 본 페이지는 IT Wiki에서 미러링된 페이지입니다. 일부 오류나 표현의 누락이 있을 수 있습니다. 원본 문서는 IT Wiki에서 확인하세요!