본문 바로가기

클라우드/쿠버네티스(Kubernetes)

쿠버네티스 Kubernetes 데몬셋 (DaemonSet)

복제본을 만들지 않는다

모든 노드에 하나씩 파드를 배치

특정 노드에 하나씩 파드를 배치- 노드의 레이블 이용

기본 레이블

노드에도 레이블을 붙일 수 있다

에이전트 형태

데몬 형태로 작동

데이터 ,로그 수집 모니터링

특정 노드에 해당 기능이 있어야한다

인프라를 구성하고 에이전트 서비스

 kubectl get ds -n kube-system

node selector  데몬셋은 노드 셀렉터를 이용

kubectl get nodes -L ku

쿠버네티스의 모든 노드는 이

에이전트 나 대신에 일을 해주는 것

 

 

 

노드 셀렉터 어떤노드에 해당하는 파드를 배치할것인지

vagrant@k-control:~$ cat ldh-ds.yml 
apiVersion: apps/v1
kind: DaemonSet 
metadata:
  name: ldh-ds
spec:
  selector:
    matchLabels:
      app: dh-ds
  template:
    metadata:
      labels:
        app: dh-ds
    spec:
      nodeSelector:
        node: development
      containers:
      - image: ghcr.io/c1t1d0s7/go-myweb
        name: ldh
        ports:
        - containerPort: 8080
          protocol: TCP


vagrant@k-control:~$ kubectl create -f ldh-ds.yml
daemonset.apps/ldh-ds created

vagrant@k-control:~$ kubectl get demonsets.apps
error: the server doesn't have a resource type "demonsets"
vagrant@k-control:~$ kubectl get daemonsets.apps
NAME     DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR      AGE
ldh-ds   0         0         0       0            0           node=development   19s
vagrant@k-control:~$ kubectl get nodes --show-labels
NAME        STATUS   ROLES    AGE     VERSION    LABELS
k-control   Ready    master   2d17h   v1.19.12   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k-control,kubernetes.io/os=linux,node-role.kubernetes.io/master=
k-node1     Ready    <none>   2d17h   v1.19.12   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k-node1,kubernetes.io/os=linux
k-node2     Ready    <none>   2d17h   v1.19.12   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k-node2,kubernetes.io/os=linux
k-node3     Ready    <none>   23h     v1.19.12   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k-node3,kubernetes.io/os=linux
vagrant@k-control:~$ kubectl label modes node1 node=development
error: the server doesn't have a resource type "modes"
vagrant@k-control:~$ kubectl label nodes node1 node=development
Error from server (NotFound): nodes "node1" not found
vagrant@k-control:~$ kubectl label nodes k-node1 node=development
node/k-node1 labeled
vagrant@k-control:~$ kubectl get nodes --show-labels
NAME        STATUS   ROLES    AGE     VERSION    LABELS
k-control   Ready    master   2d17h   v1.19.12   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k-control,kubernetes.io/os=linux,node-role.kubernetes.io/master=
k-node1     Ready    <none>   2d17h   v1.19.12   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k-node1,kubernetes.io/os=linux,node=development
k-node2     Ready    <none>   2d17h   v1.19.12   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k-node2,kubernetes.io/os=linux
k-node3     Ready    <none>   23h     v1.19.12   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k-node3,kubernetes.io/os=linux
vagrant@k-control:~$ kubectl get daemonsets.apps
NAME     DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR      AGE
ldh-ds   1         1         1       1            1           node=development   2m8s
vagrant@k-control:~$ kubectl get pods
NAME               READY   STATUS    RESTARTS   AGE
ldh-ds-45vwd       1/1     Running   0          35s
ldh-pod            1/1     Running   2          41h
ldh-pod-label      1/1     Running   1          22h
ldh-rs-exp-b5bhs   1/1     Running   1          16h
vagrant@k-control:~$ kubectl label node k-node1 node='' --overwrite
node/k-node1 labeled
vagrant@k-control:~$ kubectl get nodes --show-labels
NAME        STATUS   ROLES    AGE     VERSION    LABELS
k-control   Ready    master   2d17h   v1.19.12   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k-control,kubernetes.io/os=linux,node-role.kubernetes.io/master=
k-node1     Ready    <none>   2d17h   v1.19.12   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k-node1,kubernetes.io/os=linux,node=
k-node2     Ready    <none>   2d17h   v1.19.12   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k-node2,kubernetes.io/os=linux
k-node3     Ready    <none>   23h     v1.19.12   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k-node3,kubernetes.io/os=linux
vagrant@k-control:~$ kubectl get daemonsets.apps
NAME     DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR      AGE
ldh-ds   0         0         0       0            0           node=development   3m25s
vagrant@k-control:~$ kubectl label nodes k-node1
error: at least one label update is required
vagrant@k-control:~$ kubectl label nodes k-node1 node-
node/k-node1 labeled
vagrant@k-control:~$ kubectl get nodes --show-labels
NAME        STATUS   ROLES    AGE     VERSION    LABELS
k-control   Ready    master   2d17h   v1.19.12   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k-control,kubernetes.io/os=linux,node-role.kubernetes.io/master=
k-node1     Ready    <none>   2d17h   v1.19.12   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k-node1,kubernetes.io/os=linux
k-node2     Ready    <none>   2d17h   v1.19.12   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k-node2,kubernetes.io/os=linux
k-node3     Ready    <none>   23h     v1.19.12   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k-node3,kubernetes.io/os=linux
vagrant@k-control:~$ kubectl get daemonsets.apps
NAME     DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR      AGE
ldh-ds   0         0         0       0            0           node=development   4m48s
vagrant@k-control:~$ kubectl delete -f ldh-ds.yml
daemonset.apps "ldh-ds" deleted

 

 

 

 

노드가 셀렉팅  파드가 정상적으로 배포

데몬셋에 의해 배포가 되면

=> READY

 

노드가 죽는다고 해서 새로 만들어지지 않는다