컨트롤러란?
컨트롤러는 쿠버네티스 마스터노드(컨트롤플레이)의 구성요소인 kube-controller-manager 컴포넌트 안에서 동작하는 녀석들을 말합니다.
컨트롤러의 역할
컨트롤러의 역할은 Pod의 개수를 보장하는데, 이는 마치 에어컨 시스템과 비슷합니다.
예를 들어, 에어컨을 18도로 설정하면 설정 온도를 유지하기 위해 지속적으로 동작하는 것처럼,
컨트롤러도 원하는 상태(Desired State) 가 파드 4개라면, 이를 유지하기 위해 지속적으로 모니터링하고 개수를 조정합니다. 어렵게 말하면, 이 과정은 컨트롤 루프(Control Loop) 를 통해 주기적으로 상태를 점검한다고 이야기합니다.
컨트롤러 종류
쿠버네티스에서 사용되는 주요 컨트롤러는 다음과 같이 5가지로 분류할 수 있습니다.
1. 레플리카셋(ReplicaSet)
특정 개수의 파드를 유지하는 기본적인 컨트롤러
2. 디플로이먼트(Deployment)
ReplicaSet을 관리하며, 애플리케이션 배포 및 업데이트를 쉽게 수행
3. 데몬 셋(DamonSet)
각 노드마다 하나의 파드를 실행하도록 보장
4. 스테이트풀셋(StatefulSet)
상태를 유지해야 하는 애플리케이션(예: 데이터베이스)을 위한 컨트롤러
5. 잡 & 크론잡(Job & CronJob)
일회성 혹은 반복 실행이 필요한 작업을 관리
이 중 레플리카셋(ReplicaSet)은 가장 기본적인 컨트롤러로, 파드의 개수를 유지하는 역할을 수행하는 ‘조상’ 격의 컨트롤러입니다.
앞서 설명드린 것처럼 파드의 개수를 유지하는 컨트롤러의 역할을 한다고 보시면 됩니다.
각각의 컨트롤러는 다음 게시글에서 상세하게 정리해보겠습니다!
참고자료
2. [책] 핵심만 콕! 쿠버네티스
3. Kubernetes: Controller Overview