brunch

쿠버1탄-11. 쿠버네티스- 데몬셋 컨트롤러

by Master Seo

다음은 쿠버네티스 스터디 자료를 참고해 정리한 내용입니다.


데몬셋 ?

모든 노드에 Pod를 1개씩 생성해주는 오브젝트

DNS 파드

인프라 모니터링 에이전트 설치할때 유용하다.

데몬세트와 node가 있다.

리플리카 세트는 필요 없다.



<1> 데몬셋 테스트 1

<2> 데몬셋 테스트 2

<3> 정리



<1> 데몬셋 테스트 1


master node의 api 서버 접속

ssh -i ~/.ssh/id_rsa ubuntu@api.k8s.serverchk.com


1

디폴트로 존재하는 데몬셋 확인 ?

칼리코 노드와 kops 가 데몬셋으로 배포되어 있음.


kubectl get daemonsets.apps -n kube-system


NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE

calico-node 3 3 3 3 3 kubernetes.io/os=linux 3d22h

kops-controller 1 1 1 1 1 kops.k8s.io/kops-controller-pki=,node-


calico-node 와 kops-controller 가 모든 노드에 배포 된다.

데몬셋으로 배포 되어 있다.


2

상세 확인 ?

kubectl describe daemonsets.apps -n kube-system calico-node

kubectl describe daemonsets.apps -n kube-system kops-controller



3

cat << EOF > daemonset-1.yaml

apiVersion: apps/v1

kind: DaemonSet

metadata:

name: daemonset-1

spec:

selector:

matchLabels:

name: daemonset-cndk

template:

metadata:

labels:

name: daemonset-cndk

spec:

containers:

- name: daemonset-pod

image: nginx

EOF


4

다른 터미널에서 모니터링

watch -d kubectl get pods,ds -o wide


5

생성 ?

kubectl apply -f daemonset-1.yaml

daemonset.apps/daemonset-1 created


7

다른 터미널에서 상태 확인

NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES

pod/daemonset-1-whc8n 1/1 Running 0 86s 100.99.166.4 ip-172-20-38-114.ap-

pod/daemonset-1-xzxns 1/1 Running 0 86s 100.98.158.176 ip-172-20-38-144.ap-


node당 1개씩 pod가 생긴다.

pod를 삭제 하더라도 데몬셋에 의해 자동으로 pod가 재 생성 된다.

데몬셋은 리플리카 세트가 필요 없어 리플리카 세트는 사용하지 않는다.

기본 work node에만 생성 된다. 마스터 노드는 생성되지 않는다.생성하려면 따로 옵션을 줘야 한다.



8

데몬셋 확인

kubectl get ds -o wide

NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE CONTAINERS IMAGES SELECTOR

daemonset-1 2 2 2 2 2 <none> 100s daemonset-pod nginx



9

pod, 라벨 확인 ?

kubectl get pod --show-labels

NAME READY STATUS RESTARTS AGE LABELS

daemonset-1-57s22 1/1 Running 0 3m43s controller-revision-hash=88d8d4645,name=daemonset-cndk,pod-template-generation=1

daemonset-1-wjq49 1/1 Running 0 3m43s controller-revision-hash=88d8d4645,name=daemonset-cndk,pod-template-generation=1



10

ds 상세 확인 ?

kubectl describe ds daemonset-1

40 데몬셋.png



11

강제 pod 삭제 테스트 ?


kubectl delete pod --all

pod "daemonset-1-whc8n" deleted

pod "daemonset-1-xzxns" deleted


삭제후 다시 생성됨



12

데몬셋 확인 ?

kubectl get ds -o wide

NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE CONTAINERS IMAGES SELECTOR

daemonset-1 2 2 2 2 2 <none> 4m42s daemonset-pod nginx name=daemonset-cndk



13

데몬셋 삭제 ?

kubectl delete ds daemonset-1

// 터미널1 모니터링에서 없어진다.


14

데몬셋 확인 ?

kubectl get ds -o wide

No resources found in default namespace.





<2> 데몬셋 테스트 2


마스터 노드에도 데몬셋을 생성해 보자.

tolerations: 옵션 사용


1

cat << EOF > daemonset-2.yaml

apiVersion: apps/v1

kind: DaemonSet

metadata:

name: daemonset-2

spec:

selector:

matchLabels:

name: daemonset-cndk-2

template:

metadata:

labels:

name: daemonset-cndk-2

spec:

tolerations:

- effect: NoSchedule

operator: Exists

containers:

- name: daemonset-pod-2

image: nginx

EOF


// tolerations: = 마스터 노드에서 배포 된다. 모든 노드에 배포한다 !!!


2

ubuntu@ip-172-20-41-255:~$ kubectl apply -f daemonset-2.yaml

daemonset.apps/daemonset-2 created



3

kubectl get ds -o wide


ubuntu@ip-172-20-41-255:~$ kubectl get ds -o wide

NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE CONTAINERS IMAGES SELECTOR

daemonset-2 3 3 3 3 3 <none> 22s daemonset-pod-2 nginx name=daemonset-cndk-2



4

다른 테미널에서 모니터링

watch -d 'kubectl get pods,ds -o wide'


kubectl get pods,ds -o wide




5

kubectl get pod --show-labels


ubuntu@ip-172-20-41-255:~$ kubectl get pod --show-labels

NAME READY STATUS RESTARTS AGE LABELS

daemonset-2-fhz6l 1/1 Running 0 72s controller-revision-hash=8bc7c45d6,name=daemonset-cndk-2,pod-template-generation=1

daemonset-2-nhhgj 1/1 Running 0 72s controller-revision-hash=8bc7c45d6,name=daemonset-cndk-2,pod-template-generation=1

daemonset-2-zbwqj 1/1 Running 0 72s controller-revision-hash=8bc7c45d6,name=daemonset-cndk-2,pod-template-generation=1

ubuntu@ip-172-20-41-255:~$



6

kubectl describe ds daemonset-2



7

kubectl delete ds daemonset-2


데몬셋 모두 삭제

kubectl delete ds --all





<3> 정리


데몬셋 ?

모든 노드에 Pod를 1개씩 생성해주는 오브젝트.




<4> 다음 과정


https://brunch.co.kr/@topasvga/1678


감사합니다.

keyword
매거진의 이전글쿠버1탄-10. 쿠버네티스 -컨트롤러