DaemonSet이란?
모든 노드에 파드를 하나씩 실행하도록 하는 오브젝트
ReplicaSet과 유사하지만 다른 점이 있다면, ReplicaSet은 여러 노드에 걸쳐서 정해진 개수의 파드를 배치한다면, DaemonSet은 노드 하나 당 파드를 하나 배포.
즉 노드를 추가하게 되면 그 노드에 파드가 하나 추가되고, 노드가 제거되면 파드의 개수 또한 줄어든다.
DaemonSet의 사용 사례
- 모니터링 에이전트 배포:
- 클러스터의 모든 노드에서 시스템 모니터링을 위해 에이전트를 실행해야 할 때, DaemonSet을 사용하면 노드 추가/삭제에 상관없이 자동으로 배포됩니다.
- 로그 수집기 배포:
- 각 노드에서 로그를 수집하기 위해 로그 수집기를 배포할 때 유용합니다.
- kube-proxy 배포:
- Kubernetes 아키텍처에서 kube-proxy는 모든 워커 노드에 반드시 존재해야 하는 컴포넌트인데, DaemonSet을 통해 쉽게 배포할 수 있습니다.
- 네트워킹 솔루션:
- 예를 들어, Vivenet과 같은 네트워킹 솔루션의 에이전트를 각 노드에 배포해야 할 때 사용됩니다.
생성
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: monitoring-daemon
spec:
selector:
matchLabels:
app: monitoring-agent
template:
metadata:
labels:
app: monitoring-agent
spec:
containers:
- name: monitoring-agent
image: monitoring-agent
DaemonSet의 스케줄링 방식 변화
- 이전 방식:
- 과거에는 각 Pod에 nodeName 프로퍼티를 직접 설정하여 특정 노드에 Pod가 배치되도록 하였다. 이 방법은 스케줄러를 우회하는 방식이었다.
- Kubernetes 1.12 이후:즉, DaemonSet은 내부적으로 스케줄러를 활용하여 각 노드에 Pod를 자동으로 배포한다.
- Kubernetes 1.12 버전부터 DaemonSet은 기본 스케줄러와 노드 어피니티(node affinity) 규칙을 사용하여 Pod를 노드에 스케줄링한다.
요약
- DaemonSet은 클러스터의 모든 노드에 파드를 하나씩 배포하는 오브젝트
- 주요 사례: 모니터링, 로그 수집가, kube-proxy, 네트워킹 에이전트
- 정의 파일은 ReplicaSet과 유사
- 스케줄링 초기에는 파드마다 nodeName을 배치하였지만, 최신 버전에서는 기본 스케줄러와, NodeAffinity를 사용.
'Kubernetes' 카테고리의 다른 글
[k8s] kubernetes에서 ecr 인증하기 (0) | 2025.03.06 |
---|---|
[k8s] Resource Requirements&limits (0) | 2025.02.20 |
[k8s] Node Affinity (0) | 2025.02.05 |
[k8s] Node Selector (0) | 2025.02.05 |
[k8s] Taint and Toleration 개념 (0) | 2025.02.05 |