Skip to content

DaemonSet 소개

DaemonSet은 쿠버네티스에서 각 노드에 Pod를 하나씩 배포하는 데 사용됩니다. 클러스터에 새로운 노드가 추가되면 DaemonSet은 자동으로 해당 노드에 Pod의 사본을 추가합니다. 노드가 제거되면 해당 노드의 Pod도 자동으로 제거됩니다.

DaemonSet 사용 사례

s

  • 모든 노드에서 실행해야 하는 모니터링 에이전트나 로그 수집기 같은 애플리케이션을 배포할 때
  • 클러스터의 각 노드에 필요한 kube-proxy 컴포넌트를 배포할 때
  • 네트워킹 솔루션과 같이 각 노드에 에이전트를 배포해야 할 때

DaemonSet 정의

DaemonSet을 생성하는 것은 ReplicaSet 생성 과정과 유사합니다. 가장 큰 차이점은 kindDaemonSet으로 설정된다는 점입니다.

yaml
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:latest
sh
kubectl get daemonsets -A

DaemonSet 동작 방식

쿠버네티스 1.12 버전부터 DaemonSet은 기본 스케줄러와 노드 친화성 규칙을 사용하여 노드에 Pod를 스케줄링합니다. 이는 각 노드에 Pod가 하나씩 있는지를 보장합니다.

DaemonSet을 사용하면 클러스터의 노드 변경에 따라 자동으로 Pod를 추가하거나 제거할 수 있어, 노드별 필수 애플리케이션의 관리가 훨씬 간편해집니다.

이제 실습 테스트로 이동하여 DaemonSet을 직접 사용해 보세요.

K8s Reference Docs

https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/#writing-a-daemonset-spec