08. DaemonSet

2021. 4. 5. 13:50🎯 OpenSource/K8S

DaemonSet을 사용하여 모든 클러스터 노드마다 pod를 하나씩 올릴 수 있다.

예를 들어 모든 node에서 동일하게 log 수집기를 구동 시켜야 하는 경우 DaemonSet을 이용하여 배포하게 된다.

 

4.4.1 DaemonSet으로 모든 node에 pod 실행하기

DaemonSet으로 생성되는 pod는 올라갈 노드가 이미 지정되어 있어 무작위로 배포되지 않는다.

  • node자체가 다운될 경우 DaemonSet으 다른 node에 pod를 생성하지 않음
  • 새로운 node가 클러스터에 추가될 경우 해당 노드에 새로운 pod생성함

 

4.4.2 DaemonSet 사용하여 특정 node에 pod실행하기

따로 설정하지 않으면 DaemonSet은 클러스터의 모든 node에 pod를 배포한다.

특정 노드를 지정하기 위해서는 node-Selector 속성을 이용한다.

* DaemonSet으로 배포하는 pod는 스케줄링이 disable 되어있는 node에도 배포된다.

 

   🔹 DaemonSet YAML 정의

     다음은 5초 간격으로 "SSD OK"를 출력하는 모의 ssd-monitor 구동을 위한 daemonset이다.

     ssd 레이블이 있는 node에 한해 pod를 하나씩 올리게 된다.

apiVersion: apps/v1beta2
kind: DaemonSet
metadata:
  name: ssd-monitor
spec:
  selector:
    matchLabels:
      app: ssd-monitor
  template:
    metadata:
      labels:
        app: ssd-monitor
    spec:
      nodeSelector:
        disk: ssd
      containers:
      - name: main
        image: luksa/ssd-monitor

    ssd 정보를 가진 node를 확인한다.

root@master001:~/k8s_in_action/kubernetes-in-action/Chapter04# kubectl get node -L disk
NAME        STATUS   ROLES                  AGE   VERSION   DISK
master001   Ready    control-plane,master   34d   v1.20.4   
worker001   Ready    <none>                 34d   v1.20.4   ssd
worker002   Ready    <none>                 34d   v1.20.4

    DaemonSet으로 ssd label 값이 있는 worker001에만 pod가 올라갔다.

root@master001:~/k8s_in_action/kubernetes-in-action/Chapter04# kubectl get po -o wide
NAME                READY   STATUS    RESTARTS   AGE   IP              NODE        NOMINATED NODE   READINESS GATES
ssd-monitor-5q9w7   1/1     Running   0          39s   172.30.65.108   worker001   <none>           <none>

 

 

'🎯 OpenSource > K8S' 카테고리의 다른 글

10. ConfigMap  (0) 2021.05.08
09. Job으로 완료 가능한 단일 task 구현하기  (0) 2021.04.05
07. ReplicaSet  (0) 2021.04.05
06. liveness probe  (0) 2021.04.05
05. Pod 중지, 제거  (0) 2021.04.04