ReplicaSet

ReplicaSet은 지정된 수의 Pod 복제본이 항상 실행되도록 보장하는 쿠버네티스 리소스입니다. Pod의 가용성을 유지하고 애플리케이션의 수평적 확장을 관리합니다.

특징

Deployment와의 관계

클라우드 네트워크 개념과 비교

ReplicaSet 예시

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
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: 100m
            memory: 100Mi

셀렉터 타입

ReplicaSet은 두 가지 타입의 셀렉터를 지원합니다:

matchLabels: 키-값 쌍과 정확히 일치하는 Pod 선택

selector:
  matchLabels:
    tier: frontend

matchExpressions: 더 복잡한 셀렉터 표현식 지원

selector:
  matchExpressions:
  - key: tier
    operator: In
    values:
    - frontend
    - backend
  - key: environment
    operator: NotIn
    values:
    - dev

ReplicaSet 작동 방식

명령적 방식으로 ReplicaSet 관리

# ReplicaSet 생성
kubectl create -f replicaset.yaml

# ReplicaSet 목록 조회
kubectl get rs

# ReplicaSet 상세 정보 조회
kubectl describe rs/frontend

# ReplicaSet 스케일링
kubectl scale rs/frontend --replicas=5

# ReplicaSet 삭제 (Pod도 함께 삭제)
kubectl delete rs/frontend

# ReplicaSet만 삭제 (Pod는 유지)
kubectl delete rs/frontend --cascade=false