본문 바로가기
  • 오늘처럼
소프트웨어 아키텍처/Kubernetes

[Kubernetes] 1-18. Kubelet 수정하기

by bluefriday 2022. 5. 10.
반응형

특정 노드의 kubelet이 정상적으로 동작하지 않는 경우에 대하여 원인을 분석하고 수정하여 노드가 정상(Ready status)상태가 되도록 조치한다.

먼저 Node의 상태를 확인한다.

kubectl get node
NAME      STATUS     ROLES    AGE   VERSION
master1   Ready      master   27h   v1.23.1
worker1   NotReady   <none>   26h   v1.23.1

문제가 발생하여 노드의 상태가 NotReady 로 되어 있는 노드에 접속하여 kubelet 프로세스를 확인한다.

ssh worker1

root@worker1:~# ps aux | grep kubelet
root     29294  0.0  0.2  14856  1016 pts/0    S+   11:30   0:00 grep --color=auto kubelet

kubelet 프로세스가 구동되어 있지 않음을 확인하고 kubelet 서비스르 상세 조회한다.

root@worker1:~# service kubelet status
● kubelet.service - kubelet: The Kubernetes Node Agent
   Loaded: loaded (/lib/systemd/system/kubelet.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/kubelet.service.d
           └─10-kubeadm.conf
   Active: inactive (dead) since Sun 2019-12-08 11:30:06 UTC; 50min 52s ago
...

kubelet 서비스가 inactive(dead) 되어 있으며 kubelet 의 설정 파일이 '/etc/systemd/system/kubelet.service.d/10-kubeadm-conf' 파일임을 확인할 수 있다.

kubelet 서비스를 다시 구동하여 에러 로그를 확인한다.

root@worker1:~# service kubelet start

root@worker1:~# service kubelet status
● kubelet.service - kubelet: The Kubernetes Node Agent
   Loaded: loaded (/lib/systemd/system/kubelet.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/kubelet.service.d
           └─10-kubeadm.conf
   Active: activating (auto-restart) (Result: exit-code) since Thu 2020-04-30 22:03:10 UTC; 3s ago
     Docs: https://kubernetes.io/docs/home/
  Process: 5989 ExecStart=/usr/local/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS (code=exited, status=203/EXEC)
 Main PID: 5989 (code=exited, status=203/EXEC)

Apr 30 22:03:10 cluster3-worker1 systemd[5989]: kubelet.service: Failed at step EXEC spawning /usr/local/bin/kubelet: No such file or directory
Apr 30 22:03:10 cluster3-worker1 systemd[1]: kubelet.service: Main process exited, code=exited, status=203/EXEC
Apr 30 22:03:10 cluster3-worker1 systemd[1]: kubelet.service: Failed with result 'exit-code'.

에러 로그를 확인한 결과 '/usr/local/bin/kubelet: No such file or directory' 문구를 통해 해당 경로에 kubelet 파일이 존재하지 않음을 확인할 수 있다. (에러 원인 : wrong path to kubelet binary specified in service config)

kubelet binary 파일의 경로를 확인한다.

root@worker1:~# whereis kubelet
kubelet: /usr/bin/kubelet

 

하단의 2가지 방법 중 한가지 조치를 수행한다.

  1. kubelet binary 파일을 '/usr/local/bin/kubelet' 경로 하위로 이동
  2. 설정파일의 kubelet 경로를 현재 kubelet 의 경로로 이동

2가지 중 한가지 방법을 수행한 후에 다시 kubelet 서비스를 재 가동하고 노드의 상태가 Ready 로 변경되었음을 확인한다.

### 조치 후 kubelet 재시작
systemctl daemon-reload && systemctl restart kubelet
systemctl status kubelet

### Node 상태 확인
k get node
NAME      STATUS   ROLES    AGE   VERSION
master1   Ready    master   27h   v1.23.1
worker1   Ready    <none>   27h   v1.23.1

 

댓글