Kubernetes에서는 Application 종류에 따라 적절한 배포 방식을 선택해야 합니다.
Web Application처럼 특정 개수의 Pod를 실행하는 경우에는 Deployment를 사용합니다.
하지만 Cluster의 모든 Node에서 반드시 하나씩 실행되어야 하는 Application도 존재합니다.
예:
- Log 수집 Agent
- Monitoring Agent
- Security Agent
- Network Plugin
- Storage Plugin
이러한 Component는 특정 Pod 개수보다 “모든 Node에 실행되는 것”이 중요합니다.
Kubernetes에서는 DaemonSet을 통해 Cluster 내 모든 Node에 동일한 Pod를 자동 배포하고 관리합니다.
| 구성 요소 | 역할 |
|---|---|
| DaemonSet | Node별 Pod 관리 |
| Node | 실행 대상 Server |
| Pod | Agent Container 실행 |
| Controller | 상태 유지 |
DaemonSet 구조를 이해하면 Kubernetes 운영 환경에서 Monitoring, Logging, Security Agent를 안정적으로 배포하는 방법을 이해할 수 있습니다.
Kubernetes DaemonSet이 필요한 이유
일반적인 Deployment는 Replica 개수를 기준으로 Pod를 관리합니다.
예:
Deployment
↓
Replica 3개
↓
Pod 3개 실행
하지만 Node마다 하나씩 필요한 Application에는 적합하지 않습니다.
예:
Cluster:
Node 1
Node 2
Node 3
필요:
Log Agent
↓
Node 1 실행
Node 2 실행
Node 3 실행
이때 DaemonSet이 사용됩니다.
Kubernetes DaemonSet이란?
DaemonSet은 모든 Node 또는 특정 조건의 Node에 하나의 Pod를 실행하도록 관리하는 Kubernetes Resource입니다.
구조:
Node 1
↓
Agent Pod
Node 2
↓
Agent Pod
Node 3
↓
Agent Pod
새로운 Node가 추가되면 자동으로 Pod도 생성됩니다.
Kubernetes DaemonSet과 Deployment 차이
두 Resource는 목적이 다릅니다.
| 구분 | Deployment | DaemonSet |
|---|---|---|
| 목적 | Application 운영 | Node별 Agent 운영 |
| 기준 | Replica 개수 | Node 개수 |
| 배포 대상 | 일부 Node | 모든 Node |
| 대표 사용 | Web Server | Monitoring Agent |
실행 목적에 따라 선택해야 합니다.
Kubernetes DaemonSet 동작 구조
DaemonSet Controller가 Node 상태를 확인합니다.
과정:
Node 확인
↓
DaemonSet 조건 확인
↓
필요한 Pod 생성
↓
Node에 배치
새로운 Node 추가:
Node 생성
↓
DaemonSet 감지
↓
Pod 자동 생성
자동으로 Cluster 확장을 따라갑니다.
Kubernetes DaemonSet 활용 사례
DaemonSet은 운영 환경에서 많이 사용됩니다.
대표 사례:
| 용도 | 예시 |
|---|---|
| Log 수집 | Fluent Bit, Fluentd |
| Monitoring | Node Exporter |
| Security | 보안 Agent |
| Network | CNI Component |
| Storage | CSI Node Plugin |
Cluster 운영에 필요한 Infrastructure Component가 주 대상입니다.
Kubernetes DaemonSet 예시 구조
기본 형태:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: log-agent
spec:
selector:
matchLabels:
app: log-agent
template:
metadata:
labels:
app: log-agent
spec:
containers:
- name: agent
image: fluent-bit
Deployment와 비슷하지만 Replica를 지정하지 않습니다.
Node 수에 따라 자동 결정됩니다.
Kubernetes DaemonSet Pod 생성 방식
Node 3개 Cluster:
DaemonSet 생성
↓
Controller 확인
↓
Pod 생성
결과:
Node 1
log-agent Pod
Node 2
log-agent Pod
Node 3
log-agent Pod
각 Node에 하나씩 배치됩니다.
Kubernetes DaemonSet NodeSelector 사용
모든 Node가 아니라 특정 Node에만 실행할 수도 있습니다.
예:
GPU Node
↓
AI Monitoring Agent 실행
일반 Node
↓
실행하지 않음
Node Label을 활용합니다.
Kubernetes DaemonSet Toleration 활용
일부 Node는 Taint를 가지고 있습니다.
예:
Master Node
↓
NoSchedule
DaemonSet은 필요한 경우 Toleration을 추가하여 실행할 수 있습니다.
Control Plane Monitoring Agent 같은 경우 활용됩니다.
Kubernetes DaemonSet과 Monitoring 관계
Kubernetes 운영에서는 Monitoring Agent가 중요합니다.
구조:
Node
↓
DaemonSet
↓
Monitoring Agent
↓
Metric 수집
↓
Monitoring System
대표:
- Node Exporter
- Fluent Bit
모든 Node 상태를 수집하는 데 적합합니다.
Kubernetes DaemonSet과 Logging 구조
Log 수집 시스템은 대표적인 DaemonSet 사용 사례입니다.
구조:
Application Pod
↓
Container Log
↓
Node Log
↓
Fluent Bit Pod
↓
Log Storage
각 Node에서 발생하는 Log를 수집합니다.
Kubernetes DaemonSet 장애 상황
DaemonSet도 문제가 발생할 수 있습니다.
| 문제 | 원인 |
|---|---|
| Pod 미생성 | Node 조건 문제 |
| Pod Crash | Image 오류 |
| 일부 Node 실행 실패 | Taint 문제 |
| Resource 부족 | Node Capacity 부족 |
Node 상태와 함께 확인해야 합니다.
Kubernetes DaemonSet 확인 방법
DaemonSet 확인:
kubectl get daemonset
Pod 확인:
kubectl get pods -o wide
상세 확인:
kubectl describe daemonset daemon-name
Node별 실행 상태를 확인할 수 있습니다.
Kubernetes DaemonSet 운영 시 고려사항
DaemonSet은 모든 Node에 배포되기 때문에 Resource 관리가 중요합니다.
| 항목 | 설명 |
|---|---|
| Resource 설정 | Node 영향 관리 |
| Image 관리 | 안정적인 Version 사용 |
| Update 전략 | 서비스 영향 최소화 |
| Monitoring | Agent 상태 확인 |
잘못된 설정은 전체 Cluster에 영향을 줄 수 있습니다.
Kubernetes DaemonSet Update 방식
DaemonSet도 업데이트 전략을 제공합니다.
대표:
| 방식 | 설명 |
|---|---|
| RollingUpdate | 순차 업데이트 |
| OnDelete | 수동 업데이트 |
Production 환경에서는 RollingUpdate가 일반적입니다.
Kubernetes DaemonSet과 Node 추가 관계
Cloud 환경에서 Node가 증가하면:
Node 추가
↓
DaemonSet Controller 감지
↓
새 Pod 생성
↓
Agent 실행
별도의 설정 없이 확장됩니다.
Kubernetes DaemonSet 장점
| 장점 | 설명 |
|---|---|
| 자동 배포 | Node 추가 대응 |
| 운영 자동화 | Agent 관리 |
| 확장성 | Cluster 증가 대응 |
| 일관성 | 모든 Node 동일 구성 |
Kubernetes Infrastructure 운영의 핵심 Resource입니다.
자주 묻는 질문
DaemonSet과 Deployment 중 무엇을 사용해야 하나요?
Application Server는 Deployment, Node별 Agent는 DaemonSet을 사용하는 것이 일반적입니다.
새로운 Node가 추가되면 자동 실행되나요?
네.
DaemonSet 조건에 맞으면 자동으로 Pod가 생성됩니다.
모든 Node가 아닌 일부 Node만 사용할 수 있나요?
가능합니다.
NodeSelector와 Affinity를 활용할 수 있습니다.
마무리
Kubernetes DaemonSet은 Cluster의 모든 Node에 필요한 Pod를 자동 배포하고 관리하는 Resource입니다.
| 구성 요소 | 역할 |
|---|---|
| DaemonSet | Node별 Pod 관리 |
| Controller | 상태 유지 |
| Node | 실행 대상 |
| Pod | Agent 실행 |
DaemonSet 구조를 이해하면 Kubernetes 환경에서 Monitoring, Logging, Security, Network Component를 안정적으로 운영할 수 있습니다.
다음 글에서는 Kubernetes 운영 환경의 접근 권한 관리를 다루는 Kubernetes RBAC 완벽 가이드! User·Role·Permission 기반 보안 관리 구조 이해하기를 알아보겠습니다.