DevOps K8S(9) – 신규 Node 생성 시 자동으로 Pod 배포 – DaemonSet

안녕하세요, 오늘은 베스핀글로벌 DevOps실 구연수 님이 작성해 주신 ‘신규 Node 생성 시 자동으로 Pod 배포 – DaemonSet’에 대해 알아보겠습니다.

DaemonSet

  • ReplicaSet과 같이 Pod의 인스턴스를 여러 개 배포할 수 있도록 돕는다.
    • 단, 각 node 마다 1개의 pod 복사본만 만든다.
  • 클러스터 내에 새로운 Node가 하나 생길 때마다, Pod 복제본이 자동으로 Node에 생성된다.
  • Node가 삭제되면 Pod 역시 자동으로 삭제된다.
  • DaemonSet은 클러스터 내 모든 Node에는 항상 1개 이상의 Pod 복사본이 존재하도록 보장한다.
DaemonSet Usecase
  1. Monitoring & Log
  • 모니터링, 로그처럼 모든 노드에 배포되는 것이 좋을 때 DaemonSet을 활용하면 좋다.

2. Kube-proxy

  • 모든 Node에서 요구되는 Worker Node 컴포넌트인 Kube-proxy 역시 DaemonSet의 활용 사례이다.

3. Network

DaemonSet with yaml

kind를 제외하고 ReplicaSet과 정의 내용이 같다.

kubectl get daemonsets

DaemonSet 동작 방식

클러스터 내 각 node마다 파드를 스케쥴링하는 법이나 각 node에 pod가 있다고 보장하는 방법은?
  • Kubernetes version 1.12까지의 동작
    • pod에 node 이름 속성을 설정할 수 있고, 이를 통해 node에 위치한 pod를 바로 가져올 수 있다.
    • 각 pod가 생성되기 전에 설정 파일에 node 이름 속성을 설정하고, 생성이 될 당시에 바로 대응되는 node를 찾아 안착한다.
  • Kubernetes version 1.12 이후의 동작
    • DaemonSet을 위해 default scheduler와 node affinity 규칙을 사용한다.

감사합니다.

Written by 구 연수 / Yeonsoo koo

Software Engineer