(TIL) Kubelet
kubelet
Kubernetes worker node에서 실행되며 노드와 Control Plane 간의 통신을 담당하는 핵심 컴포넌트이다.
흔히 배의 선장에 비유하곤 한다.
kubelet은 마스터 노드의 명령을 받아 컨테이너를 실행하고, 노드의 상태를 지속적으로 보고하는 역할을 한다.
kubelet의 역할
Node를 Kubernetes Cluster에 등록한다.
새로운 Worker node가 클러스터에 추가되면, 해당 노드에서 kubelet이 실행된다.
kubelet은 kubernetes api-server에 자신을 등록하며, 등록이 완료되면 해당 노드는 클러스터의 일부가 된다.
컨테이너 실행 및 관리
Pod를 실행해야한다는 명령을 받으면 Container Runtime(Docker, containerd) 을 호출하여 컨테이너를 실행한다.
즉, kubelet이 직접 컨테이너를 실행하는 것은 아니고 Container Runtime을 통해 실행을 요청한다.
Pod 상태 모니터링 및 보고
kubelet은 노드에서 실행 중인 Pod와 컨테이너의 상태를 지속적으로 모니터링한다. 일정 주기로 kube-apiserver에 상태 보고를 진행하며, 만약 Pod이 종료되거나 비정상 상태이면 이를 감지하고 보고한다.
Kubelet의 보안 설정: TLS bootstraping
kubelet은 kube-apiserver와 TLS를 통해 통신해야한다.
이를 위해 TLS 인증서를 사용하여 kubelet을 보안인증하는데, 이를 TLS bootstraping이라고 한다.
인증 과정은 다음과 같다.
1) kubelet이 API 서버에 접속을 요청한다.
2) API 서버가 kubelet의 인증서를 확인한다.
3) 인증이 성공하면 정상적으로 노드 등록 및 Pod 실행이 가능해진다.