본문 바로가기
INFRA/DevOps

[K8s] DaemonSet

by BTC_프로틴 2022. 10. 11.

DaemonSet이란?

<이미지 출처 : Kubernetes & Docker Part 2 >

  • node당 pod가 1개씩 실행되도록 보장
  • log 수입기, 모니터링 에이전트와 같은 프로그램 실행 시 적용
  • definition
apiVersion: apps/v1
kind: DeamonSet           # kind값과 replicas 유무의 차이 이외에는 ReplicaSet과 동일
metadata:
  name: daemonset-nginx
spec:
  selector:
    matchLabels:
      app: webui
  template:
    metadata:
      name: nginx-pod
      labels:
        app: webui
    spec:
      containers:
      - name: nginx-container
        image: nginx:1.14

 

[ Hands -on ]

1. daemonset 배포

vi daemonset-exam.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: daemonset-nginx
spec:
  selector:
    matchLabels:
      app: webui
  template:
    metadata:
      name: nginx-pod
      labels:
        app: webui
    spec:
      containers:
      - name: nginx-container
        image: nginx:1.14
kubectl create -f daemonset-exam.yaml

 

  • 배포 확인
kubectl get pods -o wide --watch
NAME                    READY   STATUS    RESTARTS   AGE   IP              NODE                NOMINATED NODE   READINESS GATES
daemonset-nginx-fw229   1/1     Running   0          17s   192.168.11.66   node1.example.com   <none>           <none>
daemonset-nginx-z8qc6   1/1     Running   0          17s   192.168.221.2   node2.example.com   <none>           <none>

 

  • worker node3을 조인하기 위한 현재 보유한 token 출력
kubeadm token list

 

⚠️ token이 없는 경우

kubeadm token create --print-join-command

 

  • worker node3 조인
kubeadm join 10.100.0.104:6443 --token qf60rn.xhlt12aow3k9me56 --discovery-token-ca-cert-hash sha256:2780cd39d301a231c5da5be7d4273f66e29faa0614aeb654b21d4dafdb74e9a0

 

  • worker node3 조인 후 daemonset에 의해 배포된 container 확인
kubectl get pods -o wide --watch
NAME                    READY   STATUS    RESTARTS   AGE   IP                NODE                NOMINATED NODE   READINESS GATES
daemonset-nginx-fw229   1/1     Running   0          29m   192.168.11.66     node1.example.com   <none>           <none>
daemonset-nginx-l5m95   1/1     Running   0          32s   192.168.178.193   node3.example.com   <none>           <none>
daemonset-nginx-z8qc6   1/1     Running   0          29m   192.168.221.2     node2.example.com   <none>           <none>

 

  • daemonset에 의해 배포된 container 중 하나 삭제 후 재생성 확인
kubectl delete pods daemonset-nginx-fw229
NAME                    READY   STATUS    RESTARTS   AGE    IP                NODE                NOMINATED NODE   READINESS GATES
daemonset-nginx-6zlj8   1/1     Running   0          7s     192.168.11.67     node1.example.com   <none>           <none>
daemonset-nginx-l5m95   1/1     Running   0          4m5s   192.168.178.193   node3.example.com   <none>           <none>
daemonset-nginx-z8qc6   1/1     Running   0          32m    192.168.221.2     node2.example.com   <none>           <none>

 

2. Rolling update

  • daemonset의 경우 edit 모드에서 이미지 버전 등을 변경할 경우 자동으로 rolling update 실시
kubectl edit daemonsets.apps daemonset-nginx

 

3. Roll back

kubectl rollout undo daemonset daemonset-nginx

 

참고 :

[따배쿠] 6-4. 쿠버네티스 DaemonSet! + RollingUpdate

댓글