본문 바로가기
K8S/Scheduling

Daemon Sets

by HH_g 2024. 1. 19.

 

Daemon Set은 클러스터의 모든 노드 또는 특정 노드 그룹에 하나의 pod 를 실행하도록 하는 컨트롤러입니다.

데몬셋은 모든(또는 일부) 노드가 파드의 사본을 실행하도록 합니다.

 

노드가 클러스터에 추가되면 파드도 추가되며, 노드가 클러스터에서 제거되면 해당 파드는 garbage로 수집되어 자동 삭제됩니다.

 

데몬셋을 삭제하면 데몬셋이 생성한 파드들이 정리됩니다.

 

Deployment와 유사하지만 다른 점은 특정 노드 또는 모든 노드에 항상 실행되어야 할 특정 파드를 관리해야 한다는 것이다.

 

보통 컨트롤 플레인에 해당하는 컴포넌트(kube-apiserver, etcd, scheduler, kube-proxy 등등)를 데몬셋으로 관리합니다.

 

DaemonsSet Use Case

 

일반적으로 monitoring solution, logs viewer 같이 로그 수집, 모니터링, 백그라운드 작업 및 다른 노드 별 업무를 처리하는 데 사용됨.

일반적으로 kube-proxy, calico 등 네트워크 관련 서비스가 데몬셋으로 배포됩니다.

 

DaemonSet 동작 원리

 

데몬셋으로 배포되는 각 파드에 자동으로 node affinity가 적용되어 모든 노드에 하나씩 배포되도록 합니다.

 

DaemonSet Definition

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	

 

replicaset 과 kind만 다릅니다.

데몬셋은 셀렉터를 사용해서 특정 노드에 원하는 파드가 배포되도록 제어합니다.

kubectl create -f [파일이름]
kubectl create deployment elasticsearch --image=registry.k8s.io/fluentd-elasticsearch:1.20 -n kube-system --dry-run=client -o yaml > fluentd.yaml

 

 

 

 

같이 create 명령어로 먼저 deployment의 yaml을 dry run해서 얻고,

얻은 yaml 파일에서 replicaset을 삭제하고 kind를 daemonset으로 변경한 후 apply 합니다.

apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: elasticsearch
  name: elasticsearch
  namespace: kube-system
spec:
  selector:
    matchLabels:
      app: elasticsearch
  template:
    metadata:
      labels:
        app: elasticsearch
    spec:
      containers:
      - image: registry.k8s.io/fluentd-elasticsearch:1.20
        name: fluentd-elasticsearch
        resources: {}
                                                                       

 

View DaemonSets

 

kubectl get daemonsets

 

 

참고

Certified Kubernetes Adiminstrtor(CKA) with Practice Tests by Mumshad Mannambeth, KodeKloud Training

'K8S > Scheduling' 카테고리의 다른 글

Static Pods  (0) 2024.01.19
[Scheduling] Resource Requirements and Limits  (0) 2024.01.19
Node Selectors & Node Affinity⭐⭐⭐  (0) 2024.01.19
Taints and Tolerations⭐⭐⭐  (0) 2024.01.18
[Scheduling] Pod Scheduling Process, nodeName  (0) 2024.01.18