3.4.1 데몬셋
가장 먼저 살펴볼 것은 데몬셋(DaemonSet)입니다. 데몬셋은 디플로이먼트의 replicas가 노드 수만큼 정해져 있는 형태라고 할 수 있는데, 노드 하나당 파드 한 개만을 생성합니다.
데몬셋은 언제 사용할까요? 사실 데몬셋은 이미 여러 번 사용했습니다. Calico 네트워크 플러그인과 kube-proxy를 생성할 때 사용했고, MetalLB의 스피커에서도 사용했습니다. 이들의 공통점은 노드의 단일 접속 지점으로 노드 외부와 통신하는 것입니다. 따라서 파드가 1개 이상 필요하지 않습니다. 결국 노드를 관리하는 파드라면 데몬셋으로 만드는 게 가장 효율적입니다.
데몬셋을 만들어 보면서 데몬셋의 작동 원리를 확인해 보겠습니다.
1. kubectl get pods -n metallb-system -o wide를 실행해 현재 MetalLB의 스피커가 각 노드에 분포돼 있는 상태를 확인합니다.
[root@m-k8s ~]# kubectl get pods -n metallb-system -o wide
NAME … STATUS RESTARTS AGE IP NODE …
controller-65895b47d4-b845q … Running 0 47m 172.16.103.133 w2-k8s …
speaker-hzfmz … Running 0 47m 192.168.1.10 m-k8s …
speaker-kqcxf … Running 0 47m 192.168.1.101 w1-k8s …
speaker-m7fxr … Running 0 47m 192.168.1.103 w3-k8s …
speaker-tsczn … Running 0 47m 192.168.1.102 w2-k8s …