DaemonSets

zuckerfrei·2023년 7월 6일
0

Kubernetes

목록 보기
24/63

데몬셋이란?

모든 노드마다 동일한 파드를 하나씩 띄워놓는 데몬.
새로운 노드가 추가되면 지정한 파드가 자동으로 추가된다.
노드가 제거되면 데몬셋으로 지정한 파드도 제거된다.

레플리카셋과 거의 유사하다.


어디에 쓸까?

클러스터 각 노드마다 모니터링 에이전트, 로그 수집 에이전트 배포할 경우 유용하다.
굳이 이런 파드를 띄우지 않아도 데몬셋이 알아서 띄워주고 죽여주니까.

kube-proxy가 이런 데몬셋을 사용하는 대표적인 사례이다.
kube-proxy 복습 링크

어떻게 생성?

Replicaset 생성과 거의 유사하며 definition 파일 구조도 거의 동일하다.
kind가 ReplicaSet이 아니라 DaemonSet이라는 것만 다르다.

예시)

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluentd-elasticsearch
  namespace: kube-system
  labels:
    k8s-app: fluentd-logging
spec:
  selector:
    matchLabels:
      name: fluentd-elasticsearch
  template:
    metadata:
      labels:
        name: fluentd-elasticsearch
    spec:
      containers:
      - name: fluentd-elasticsearch
        image: quay.io/fluentd_elasticsearch/fluentd:v2.5.2
        resources:
          limits:
            memory: 200Mi
          requests:
            cpu: 100m
            memory: 200Mi
        volumeMounts:
        - name: varlog
          mountPath: /var/log
      terminationGracePeriodSeconds: 30
      volumes:
      - name: varlog
        hostPath:
          path: /var/log

파일 생성 팁!

kubectl create daemonset 이라는 명령어는 존재하지 않는다.

빠르게 definition 파일 포맷을 만들기 위해서
먼저 형식이 유사한 kubectl create deploy 명령어를 사용한다.
그 후 kind 등 필요한 부분을 수정하면 된다.


어떻게 작동?

v1.12 이전

파드마다 스케줄링 할 각 nodeName을 지정해서 스케줄링했음

v1.12 이후

node affinity 와 기본 스케줄러를 사용하여 스케줄링함

profile
무설탕 음료를 좋아합니다

0개의 댓글