Kubernetes DaemonSet 완벽 가이드! 모든 Node에서 실행되는 Container 관리 구조 이해하기

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를 자동 배포하고 관리합니다.

구성 요소역할
DaemonSetNode별 Pod 관리
Node실행 대상 Server
PodAgent 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는 목적이 다릅니다.

구분DeploymentDaemonSet
목적Application 운영Node별 Agent 운영
기준Replica 개수Node 개수
배포 대상일부 Node모든 Node
대표 사용Web ServerMonitoring Agent

실행 목적에 따라 선택해야 합니다.

Kubernetes DaemonSet 동작 구조

DaemonSet Controller가 Node 상태를 확인합니다.

과정:

Node 확인

DaemonSet 조건 확인

필요한 Pod 생성

Node에 배치

새로운 Node 추가:

Node 생성

DaemonSet 감지

Pod 자동 생성

자동으로 Cluster 확장을 따라갑니다.

Kubernetes DaemonSet 활용 사례

DaemonSet은 운영 환경에서 많이 사용됩니다.

대표 사례:

용도예시
Log 수집Fluent Bit, Fluentd
MonitoringNode Exporter
Security보안 Agent
NetworkCNI Component
StorageCSI 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 CrashImage 오류
일부 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 전략서비스 영향 최소화
MonitoringAgent 상태 확인

잘못된 설정은 전체 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입니다.

구성 요소역할
DaemonSetNode별 Pod 관리
Controller상태 유지
Node실행 대상
PodAgent 실행

DaemonSet 구조를 이해하면 Kubernetes 환경에서 Monitoring, Logging, Security, Network Component를 안정적으로 운영할 수 있습니다.

다음 글에서는 Kubernetes 운영 환경의 접근 권한 관리를 다루는 Kubernetes RBAC 완벽 가이드! User·Role·Permission 기반 보안 관리 구조 이해하기를 알아보겠습니다.

댓글 남기기