728x90
반응형

Daemon Set

 

포드를 관리하는 컨트롤러는 크게 두 가지로 나뉜다. 레플리카셋, 데몬셋이다. 이전에 레플리카는 설명했으므로 이번에는 데몬셋을 설명해보려 한다.

 

데몬셋이란 모든 노드에 하나씩만 포드가 실행하도록 하는 컨트롤러이다. 레플리카셋은 원하는 복제수 만큼 노드에서 포드가 실행된다. 하나의 노드에 두개, 세개 이렇게 실행될 수 있지만 데몬셋은 무조건 노드하나에 포드하나만 실행한다. 모든 노드에 공평하게 하나씩만 분배하는 것이다. 

 

 

위의 그림은 레플리카셋과 데몬 셋의 차이점을 나타낸다. 개념 자체는 어려운 개념이 아니기 때문에 이정도면 설명이 될 것이다.

 

레플리카셋과 데몬셋은 어떤 차이점이 있을까?

우선 스케줄러를 사용하냐 안하냐의 차이가 있다. 레플리카셋의 경우 노드에서 실행되려면 스케줄러를 통해 해당 노드에서 실행될 수 있는지 없는지를 확인하는데 데몬셋은 스케줄러를 사용하지 않는다. 그냥 무조건 노드에 하나씩 배포되기 때문에 스케줄러를 사용할 필요가 없기때문이다. 그러니 복제본 수에 대한 설정도 없으며 라벨 셀렉터의 의미도 없다. 

 

데몬셋으로 실행되는 포드는 노드가 죽으면 자기도 같이 죽는다. 다른데 옮겨가지도 않으며 자신이 속한 노드에서만 실행되고 사라진다.

 

근데 여기서 알아둬야 할점은 노드를 선택해서 실행할 수 있다는 점이다. 이건 데몬셋을 왜 사용하는지를 이해하면 왜 노드를 선택하는지를 알 수가 있다.

 

일단 데몬셋을 사용하는 예제부터 알아본다.

 

1. 노드에서 기본적으로 실행해야하는 시스템 포드

2. 노드에서의 로그 수집 또는 모니터링

3. 특정 노드에서 실행되야하는 포드

 

환경에 따라 사용되는 방법이 모두 다르지만 기본적으로 사용한다면 이정도이다.  여기서 특정 노드에서 실행되야하는 포드가 이해가 안될 수 있는데 이를 위해 예를 하나 들어보겠다.

 

노드가 2개가 있는데 하나는 SSD, 다른 하나는 HDD를 가진 노드라고 가정한다. 여기서 일반적으로 데몬셋을 실행하면 두 노드위에 각자 포드가 생성되지만 사용자는 SSD에서 빠른 디스크 I/O 작업을 해야하는 포드를 실행해야 한다면 SSD를 가진 노드에서만 작업하려고 할것이다. 그렇다면 SSD를 가진 노드들에만 데몬셋을 실행시켜야 하는데 이런 경우 특정 노드셀렉터를 사용하여 실행하고싶은 노드에서만 데몬셋에 의한 포드가 생성되도록 할 수 있다.

 

아래는 간단하게 모든 노드에서 nginx를 구동하는 매니페스트이다.

 

 

반응형

'Kubernetes' 카테고리의 다른 글

Kubernetes Ingress  (0) 2019.09.19
Kubernetes Service  (0) 2019.09.17
Kubernetes Monitoring - Version1  (0) 2019.09.17
Kubernetes HorizontalPodAutoscaler  (0) 2019.08.31
Kubernetes Pod Replica  (0) 2019.08.30

+ Recent posts