탕구리's 블로그

[Kubernetes] #4 컨트롤러(Controller) 개념정리 본문

devOps

[Kubernetes] #4 컨트롤러(Controller) 개념정리

탕구리당 2020. 6. 7. 23:37
반응형

** 해당 도서를 구매하며 학습해보며 내용을 정리하는 목적으로 글을 작성하였습니다.

** 문제가 되는 경우 말씀해주시면 조치를 취하도록 하겠습니다. 감사합니다 :)

 

 

 

컨트롤러?

파드를 관리하는 역할을 한다. 다양한 목적에 따라 쿠버네티스에서 제공하는 컨트롤러를 사용하면 된다. 쿠버네티스에서 제공하는 컨트롤러의 종류로는 "레플리케이션 컨트롤러", "레플리카 세트", "디플로이먼트", "데몬" , "스테이트풀세트", "크론잡" 등이 있다.

 

각각의 컨트롤러를 용도에 맞게 정리해보면!

일반적으로 상태를 유지하지 않아도 되는 파드를 관리하는 경우 
- 레플리케이션 컨트롤러(Relication Controller)
- 레플리카 세트(Replica Set)
- 디플로이먼트(Deployment)

클러스터 전체에 배포가 필요한 파드를 관리하는 경우
- 데몬 셋(Deamon Set)

상태관리가 필요한 파드를 관리하는 경우
- 스테이트풀세트(Stateful Set)

배치성 작업을 진행하는 파드를 관리하는 경우
- 크론잡(Cronjob)

 

 

레플리케이션 컨트롤러(Replication controller)

쿠버네티스 프로젝트 초기부터 존재하던 컨트롤러이다. 실행할 파드의 개수를 지정할 수 있고 지정한 개수만큼 파드가 유지되도록 관리한다. 현재는 레플리케이션 컨트롤러와 비슷한 역할을 하는 컨트롤러들을 많이 사용한다. 

 

 

레플리카 세트(ReplicaSet)

기본적으로 하는 역할은 레플리케이션 컨트롤러와 비슷하지만 집합기반의 셀렉터(Selector)를 지원한다. 집합기반의 셀렉터는 in, notin, exists와 같은 연산을 제공하며 조건에 따라 필요로하는 레이블을 선택할 수 있다.

추가로 레플리카 세트에서는 파드 업데이트시 rolling-update가 가능하다.

 

 

디플로이먼트(Deployment)

상태가 없는 앱을 배포할 때 사용하는 가장 기본적인 컨트롤러이다. 디플로이먼트는 레플리카세트를 관리하면서 좀 더 앱 배포에 관련된 자세한 작업이 가능하다. 단순 파드의 배포뿐만이 아닌 배포 방식, 버전 롤백 등이 설정 가능하다.

 

 

데몬세트(Deamon Set)

데몬세트는 클러스터 전체 노드에 특정 파드를 실행할 때 사용합니다. 음.. 예를 들면 노드마다 존재하는 로그수집기나 시스템 리소스를 받아 볼 수 있는 Exporter 같은 것들을 예로 들 수 있을 것 같습니다.  데몬셋이 대상으로 하고 있던 노드가 클러스터에 제거되는 경우, 다른 노드로 이동하여 파드를 실행시키지 않고 제거됩니다.

 

 

스테이트 풀 세트(StatefulSet)

레플리케이션 컨트롤러, 레플리카세트, 디플로이먼트가 stateless한 파드를 관리하는 용도였다면, 스테이트 풀 세트는 상태가 있는 파드를 관리하는 컨트롤러 입니다. 상태가 있다는 의미는 컨테이너가 종료되더라도 컨테이너에서 필요로 하는 데이터가 남게(Stateful 한 상태)되어 파드를 재시작 하더라도 데이터를 보존할 수 있습니다.

 

 

잡(Job)

앞서 언급했던 것 처럼 배치성 작업을 진행하기 위해 사용하는 컨트롤러 입니다. 실행된 후 종료해야 하는 성격의 작업을 실행시킬 때 사용하는 컨트롤러라고 생각하면 좋을 것 같습니다.  잡의 종류로는 1.단일잡 2.완료된 잡 개수가 있는 병렬 잡 3.워크 큐가 있는 병렬잡이 있습니다. 

 

 

크론잡(CronJob)

크론잡은 잡을 시간 기준으로 관리하도록 진행합니다. 지정한 시간에 한번만 잡을 실행하거나 지정한 시간동안 주기적으로 잡을 반복할 수 있습니다.

 

 

 

이번 글에서는 간단하게 쿠버네티스 컨트롤러에는 어떤 종류가 있고 어떤 역할을 하는지 정리해봤습니다. 다음 글에서는 각 컨트롤러의 예제 코드를 작성해보며 차근차근 정리를 해봅시다.

 

 

반응형
Comments