Kubelet은 Kubernetes의 동작에 꼭 필요한 핵심 요소 중 하나로, 컨트롤 플레인과 모든 워커(노드)에 설치된다. 주요 역할은 파드 스펙(PodSpec, 파드를 어떻게 실행할지 정의한 구성 파일)을 읽고, 이에 따라 컨테이너를 실행하고 관리한다.
kubelet 안에는 CAdvisor라고 하는 Container Engine 프로그램이 포함되어 있다. CAdvisor는 현재 시스템의 하드웨어 리소스(CPU, 메모리 등) 사용량과 컨테이너 이미지들이 얼마나 다운로드 되었는지 등 이미지 정보 등 다양한 데이터를 수집하는 모니터링 툴이다.
Kubelet의 주요 기능 및 역할은 다음과 같다.
- Pod 수명 주기 관리
- API 서버로 부터 PodSpec을 받아 해당 노드에서 실행해야 하는 파드들을 시작하거나 중지한다. 또한, 필요에 따라 재시작 작업도 함께 수행한다.
- 컨테이너 상태 모니터링
- 자신이 관리하는 Container들의 상태를 지속적으로 체크하고, 그 정보를 쿠버네티스 API 서버에 보고한다.
- 노드 상태 보고
- 노드 자체의 상태 정보(메모리, CPU 사용량 등)도 쿠버네티스 API 서버에 주기적으로 보고한다.
- CNI Plugin과 연동
- CNI(Cintainer Network Interface) Plugin과 연동하여 네트워크 설정 작업을 수행한다.
- 볼륨 관리
- Persistent Volumes(PV), Persistent Volume Claims(PVC), Storage Classes 등 쿠버네티스 볼륨 시스템과 함께 동작하여, 필요한 데이터 볼륨을 컨테이너와 연결하거나 분리하는 작업을 수행한다.