IT/Kubernetes

kubernetes woker node 장애가 발생한다면 kubelet 을 살펴보자

엘티엘 2022. 2. 23. 23:05

아래 그림은 kubernetes architecture 이다. 기본적으로 각 worker node(=Compute machines) 에는 kubelet과 kube-proxy가 존재하는데, 이중 kubelet에 대해서 좀더 자세히 살펴보자.

 

kubelet 이란?

클러스터의 각 노드에서 실행되는 에이전트. Kubelet은 파드에서 컨테이너가 확실하게 동작하도록 관리한다.
Kubelet은 다양한 메커니즘을 통해 제공된 파드 스펙(PodSpec)의 집합을 받아서 컨테이너가 해당 파드 스펙에 따라 건강하게 동작하는 것을 확실히 한다. Kubelet은 쿠버네티스를 통해 생성되지 않는 컨테이너는 관리하지 않는다.
[출처] https://www.redhat.com/ko/topics/containers/kubernetes-architecture

기본적으로 kubelet은 controlplane의 apiserver와 통신을 하며, node에서 발생하는 각종 정보를 전달한다. 따라서 node의 상태가 정상적으로 업데이트되지 않는다면(NotReady) 1차적으로 kubelet을 의심해봐야 한다.

kubelet 는 서비스 프로세스

위의 문구를 자세히 보면 "에이전트" 라고 되어 있다. 즉 kubelet은 pod 가 아닌 프로세스이다. 아래 그림은 worker node에서 ps 및 service 명령어로 kubelet을 확인한 내용이다 . kubelet 이라는 프로세스가 존재하며, service 로 등록되어 있음을 알 수 있다.

kubelet 설정파일

kubelet의 실행 파라미터를 자세히 보면 아래 3개 설정파일을 입력으로 전달하는 것을 확인할 수 있다.

  • /etc/kubernetes/bootstrap-kubelet.conf 
  • /etc/kubernetes/kubelet.conf
  • /var/lib/kubelet/config.yaml

kubelet 디버깅

일반적인 서비스 프로세스의 로그를 보는 방식과 동일하다 (journalctl)

journalctl -u kubelet -f

반응형