Kubernetes/Kubernetes Advanced

📌 [DaemonSet 심화편 #24] DaemonSet의 ReplicaSet과의 차이점 분석: 운영 구조와 스케줄링 비교

ygtoken 2025. 3. 22. 21:14
728x90

1️⃣ 개요

Kubernetes에서 Pod을 배포하는 대표적인 리소스로는 ReplicaSetDaemonSet이 있습니다.
둘 다 여러 개의 Pod을 생성하는 역할을 하지만, Pod의 배포 방식과 목적은 완전히 다릅니다.

이 글에서는 DaemonSet과 ReplicaSet의 개념적 차이, 스케줄링 방식, 운영 목적의 차이점을 비교하여
둘 중 어떤 리소스를 선택해야 하는지 명확히 이해할 수 있도록 구성하였습니다.


2️⃣ 역할 차이 요약

항목 DaemonSet ReplicaSet
Pod 수 조절 방식 노드 수에 따라 자동 결정 (1개/노드) 수동으로 .spec.replicas 수 지정
배포 대상 클러스터의 모든 노드 (혹은 특정 조건의 노드) 스케줄링 가능한 노드 중 임의 선택
목적 노드 기반 작업 (모니터링, 로그 수집 등) 애플리케이션 수평 확장
리소스 제어 노드 조건에 따라 제한 수동 제어 중심
연동 대상 Node, HostPath, Taint 등과 밀접 일반 애플리케이션 중심

3️⃣ 동일한 이미지를 DaemonSet / ReplicaSet으로 배포한 예

✅ DaemonSet 예제

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: ds-example
spec:
  selector:
    matchLabels:
      app: sidecar-agent
  template:
    metadata:
      labels:
        app: sidecar-agent
    spec:
      containers:
        - name: agent
          image: busybox
          command: ["sh", "-c", "echo Agent Running; sleep 3600"]

📌 설명

  • 각 노드에 하나의 Pod가 자동으로 배포됩니다.
  • 노드 수가 늘어나면 새로운 노드에도 Pod이 자동 생성됩니다.

✅ ReplicaSet 예제

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: rs-example
spec:
  replicas: 3                            # 실행할 Pod 수를 명시적으로 지정
  selector:
    matchLabels:
      app: app-server
  template:
    metadata:
      labels:
        app: app-server
    spec:
      containers:
        - name: app
          image: nginx

📌 설명

  • **특정 개수의 Pod(여기선 3개)**를 클러스터 내에서 자동 분산 배치합니다.
  • 노드 수와는 무관하며, Pod 수는 고정됩니다.

4️⃣ 스케줄링 방식 차이

비교 항목 DaemonSet  ReplicaSet
노드 변화 감지 O (노드 추가 시 Pod 자동 생성) X (노드 변화와 무관)
Pod 수 자동 조절 O X
특정 노드 배포 제한 Node Affinity, Toleration 등으로 제어 동일하지만 수동 Replica 유지
업데이트 방식 RollingUpdate / OnDelete RollingUpdate (기본)

5️⃣ 어떤 경우에 사용해야 할까?

사용 목적 적합한 리소스
모든 노드에 모니터링 에이전트 배포 ✅ DaemonSet
특정 노드에만 로그 수집기 배포 ✅ DaemonSet (with Node Affinity)
웹 서버, API 서버 등의 수평 확장 ✅ ReplicaSet (혹은 Deployment)
고정된 개수의 백엔드 프로세스 운영 ✅ ReplicaSet

6️⃣ 관련 리소스 조합 팁

조합  대상 설명
DaemonSet + HostPath 노드 로그 또는 디바이스 접근
ReplicaSet + HPA 수평 자동 확장 기반 운영
DaemonSet + Toleration Taint된 노드에만 배포
ReplicaSet + Deployment 버전 관리 및 롤백 기능 활용

🔥 7️⃣ 결론

DaemonSet은 모든 노드 단위의 작업을 위한 Pod 배포에 적합하며, Node 환경과 밀접한 연동을 전제로 합니다.
ReplicaSet은 애플리케이션 배포 및 수평 확장에 적합한 리소스로, 개수 기반의 제어가 핵심입니다.
Pod이 어떤 목적으로, 어떤 대상 범위로 운영되는지를 기준으로 적절한 리소스를 선택해야 합니다.

 

728x90