반응형
특정 노드의 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가지 방법 중 한가지 조치를 수행한다.
- kubelet binary 파일을 '/usr/local/bin/kubelet' 경로 하위로 이동
- 설정파일의 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
'소프트웨어 아키텍처 > Kubernetes' 카테고리의 다른 글
[Kubernetes] 1-20. 클러스터 업그레이드 및 클러스터 조인 (0) | 2022.05.11 |
---|---|
[Kubernetes] 1-19. Secret 생성 후 파드에 마운트 하기 (0) | 2022.05.10 |
[Kubernetes] 1-17. 파드의 컨테이너 정보 확인하기 (0) | 2022.05.10 |
[Kubernetes] 1-16. 네임스페이스와 API 리소스 확인하기 (0) | 2022.05.10 |
[Kubernetes] 1-15. 클러스터 이벤트 확인하기 (0) | 2022.05.06 |
댓글