클라우드/쿠버네티스(Kubernetes)
쿠버네티스 Kubernetes 데몬셋 (DaemonSet)
두뚜
2021. 7. 9. 10:04
복제본을 만들지 않는다
모든 노드에 하나씩 파드를 배치
특정 노드에 하나씩 파드를 배치- 노드의 레이블 이용
기본 레이블
노드에도 레이블을 붙일 수 있다
에이전트 형태
데몬 형태로 작동
데이터 ,로그 수집 모니터링
특정 노드에 해당 기능이 있어야한다
인프라를 구성하고 에이전트 서비스
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
노드가 죽는다고 해서 새로 만들어지지 않는다
ㅇ