[Scheduling] DaemonSets

IMKUNYOUNG·2024년 8월 1일
0

KCNA

목록 보기
55/56

이번 포스트에서는 Kubernetes의 DaemonSets에 대해 알아보겠습니다.

DaemonSets란

DaemonSets는 Kubernetes에서 ReplicaSets와 유사한 기능을 제공합니다. 그러나 중요한 차이점이 있습니다. ReplicaSets는 여러 인스턴스의 파드를 다양한 노드에 분산시키는 반면, DaemonSets는 각 노드에 오직 하나의 파드만을 배포합니다. 이를 통해 클러스터의 각 노드에 필수적인 시스템 컴포넌트나 에이전트를 일관되게 배포할 수 있습니다.

주요 기능

  • 자동 복제 및 제거: 새로운 노드가 클러스터에 추가될 때, 해당 노드에도 자동으로 파드가 추가됩니다. 반대로, 노드가 제거되면 해당 노드의 파드도 자동으로 삭제됩니다. 이는 DaemonSet이 클러스터의 모든 노드에 항상 하나의 파드 복사본이 존재하도록 보장하기 때문입니다.
  • 중앙 관리: DaemonSets를 사용하면 특정 파드를 클러스터 전체에 걸쳐 관리할 수 있습니다. 이는 클러스터의 변화에 대응하여 수동으로 모니터링 에이전트나 로그 수집기를 추가하거나 제거할 필요를 없애줍니다.

DaemonSets의 사용 사례

DaemonSets는 여러 가지 중요한 사용 사례를 가지고 있습니다. 다음은 대표적인 예입니다:

  • 모니터링 및 로깅: 클러스터의 모든 노드에 모니터링 에이전트나 로그 수집기를 배포하여, 각 노드의 상태를 실시간으로 모니터링하고 로그를 수집할 수 있습니다.
  • 네트워크 컴포넌트 배포: Kubernetes 클러스터에서 각 노드에 필요한 네트워크 컴포넌트(예: kube-proxy)를 배포하는 데 DaemonSets를 사용할 수 있습니다.
  • 보안 및 정책 관리: 보안 에이전트나 정책 엔진을 각 노드에 배포하여, 클러스터 전반에 걸쳐 일관된 보안 정책을 적용할 수 있습니다.

DaemonSets 생성 방법

DaemonSets의 생성 과정은 다음과 같습니다:

  • apiVersion과 kind 설정: apiVersion은 apps/v1이며, kind는 DaemonSet으로 설정합니다.
  • 이름 설정: 예를 들어 monitoring-daemon과 같은 이름을 설정할 수 있습니다.
  • spec 구성: spec 섹션 아래에 셀렉터와 파드 사양 템플릿을 정의합니다.
  • 배포 명령 실행: DaemonSet을 배포하려면 kubectl create daemon set 명령을 사용합니다. 배포된 DaemonSet을 확인하려면 kubectl get daemonsets 명령을 사용하고, 더 자세한 정보를 확인하려면 kubectl describe daemonset 명령을 사용합니다.
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: monitoring-daemon
spec:
  selector:
    matchLabels:
      app: monitoring
  template:
    metadata:
      labels:
        app: monitoring
    spec:
      containers:
      - name: monitoring-agent
        image: monitoring-agent:latest

DaemonSets의 동작 원리

DaemonSets는 각 노드에 파드를 스케줄링하여 모든 노드에 파드가 존재하도록 합니다. Kubernetes 버전 1.12 이전에는 노드 이름 속성을 설정하여 파드를 직접 특정 노드에 배치했으나, 버전 1.12 이후로는 기본 스케줄러와 노드 어피니티 규칙을 사용하여 파드를 스케줄링합니다.

이러한 방식으로 DaemonSets는 클러스터의 변화에 유연하게 대응하고, 모든 노드에 중요한 컴포넌트를 안정적으로 배포할 수 있게 합니다.

마치며

DaemonSets는 Kubernetes 클러스터의 중요한 관리 도구 중 하나로, 모든 노드에 필수적인 파드를 일관되게 배포할 수 있는 강력한 방법입니다. 이를 통해 시스템 관리자와 개발자는 클러스터 관리의 복잡성을 줄이고, 안정적이고 일관된 운영 환경을 유지할 수 있습니다.

0개의 댓글