쿼카러버의 기술 블로그
[쿠버네티스] 데몬셋이란? (DaemonSet) 본문
데몬셋(daemonset)은 클러스터 전체에서 포드를 띄울 때 사용하는 컨트롤러다.
쿠버네티스의 컨트롤러 중 하나인데, 여기서 컨트롤러란 기본 오브젝트를 생성하고 이를 관리하는 역할으 한다.
대표적인 컨트롤러로는 Replica Set, DaemonSet, Job, StatefulSet, Deployment 등이 있다.
데몬셋은 디플로이먼트와 유사하게 파드를 생성하고 관리한다. 디플로이먼트는 롤링 업데이트, 배포 일시 중지 등 배포 작업을 세분화한다면 데몬셋은 특정 노드 또는 모든 노드에 실행되어야 할 특정 파드를 관리하는 것이다.
데몬셋을 이용해서 포드를 실행하면 해당 포드는 클러스터 전체 노드에 떠 있게 된다. 다시 말해서 클러스터 내에 새롭게 노드가 추가되었을 때 자동으로 그 노드에 데몬셋으로 띄운 포드가 실행되게 되는 것이다. 그림으로 보면 아래와 같다.
당연히 노드가 클러스터에서 빠지게 되면 그 노드에 있던 포드는 그대로 사라지고 다른 곳으로 옮겨가서 실행되거나 하지는 않는다. 따라서 데몬셋은 보통 로그수집기를 실행하거나 노드를 모니터링 하는 등 클러스터 전체에 항상 실행시켜 두어야 하는 포드를 실행할 때 사용한다.
꼭 클러스터 전체에 띄워야 하는건 아니고, 테인트와 톨러레이션 옵션을 사용하면, 데몬셋을 전체 클러스터의 노드가 아니라 특정 노드들에만 선택해서 실행할 수도 있다. 테인트가 지정된 노드에서는 포드가 뜰 수 없거나, 강제로 포드를 띄우기 위해 톨러레이션 옵션을 줄 수 있다. (톨러레이션 옵션은 테인트보다 더 우선순위가 높음)
참고 자료
'깨알지식 - 개발' 카테고리의 다른 글
[클라우드] 프로비저닝(provisioning)이란? (0) | 2021.09.22 |
---|---|
스웨거란? (Swagger, OpenAPI) (0) | 2021.09.14 |
IaaS, PaaS, SaaS 클라우드 서비스 유형 (0) | 2021.08.31 |
3티어 웹이란 (0) | 2021.08.31 |
[golang] Fprint 간단한 설명 (0) | 2021.08.30 |