728x90
1️⃣ 개요
Kubernetes에서 Pod을 배포하는 대표적인 리소스로는 ReplicaSet과 DaemonSet이 있습니다.
둘 다 여러 개의 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
'Kubernetes > Kubernetes Advanced' 카테고리의 다른 글
📌 [Job 심화편 #2] Job에서 BackoffLimit과 ActiveDeadlineSeconds의 차이점과 조합 전략 (0) | 2025.03.22 |
---|---|
📌 [Job 심화편 #1] Job 리소스의 실행 보장 방식: Pod 실패 대비 전략과 재시도 설정 (0) | 2025.03.22 |
📌 [DaemonSet 심화편 #23] DaemonSet과 Metrics Server 연동을 통한 노드 리소스 수집 방식 (0) | 2025.03.22 |
📌 [DaemonSet 심화편 #22] DaemonSet이 적용되지 않는 노드 감지 및 복구 자동화 방안 (0) | 2025.03.22 |
📌 [DaemonSet 심화편 #21] DaemonSet과 ConfigMap 동기화 전략: 노드별 구성 분리와 업데이트 대응 (0) | 2025.03.22 |