IT/CLOUD(AWS,Azure,GCP,Docker)

쿠버네티스(kubernetes) kubelet.go node not found #NotReady

알콩달콩아빠 2022. 6. 19. 20:43
728x90
반응형
 
$ kubectl get nodes
 
NAME STATUS ROLES AGE VERSION
 
asung-cloud NotReady master 177d v1.18.6
 
asung-cloud2 Ready worker 177d v1.18.6
 
asung-cloud3 Ready worker 177d v1.18.6
 
asung-cloud4 Ready ingress 173d v1.18.6

 

어느날 보니 NotReady 상태가 걸려있었다 ㅡ.ㅡ

 

 

트러블 슈팅 과정

 

1. kubelet을 재부팅하여도 고쳐지지 않아서, master 서버 자체를 재부팅

 
$ sudo systemctl restart kubelet
 
$ sudo reboot

 

2.  오히려 kubelet 서비스가 시작되지 않음(systemctl status kubelet) ㅡ.ㅡ  에러 메세지를 자세히 읽어보니 swap을 꺼달라는 메세지

$ sudo swapoff -a

아마도 재부팅하면서 swap 설정이 켜졌나봄

 

3. kubelet restart하고 최근 메세지를 확인 

 
$ systemctl status kubelet
 
● kubelet.service - kubelet: The Kubernetes Node Agent
 
Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)
 
Drop-In: /usr/lib/systemd/system/kubelet.service.d
 
└─10-kubeadm.conf
 
Active: active (running) since 일 2021-01-24 03:34:52 KST; 23s ago
 
Docs: https://kubernetes.io/docs/
 
Main PID: 32545 (kubelet)
 
Tasks: 16
 
Memory: 23.5M
 
CGroup: /system.slice/kubelet.service
 
└─32545 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf...
 
 
 
1월 24 03:35:15 aive-cloud kubelet[32545]: E0124 03:35:15.907622 32545 kubelet.go:2268] node "asung" not found
 
1월 24 03:35:16 aive-cloud kubelet[32545]: E0124 03:35:16.007808 32545 kubelet.go:2268] node "asung" not found
 
1월 24 03:35:16 aive-cloud kubelet[32545]: E0124 03:35:16.108023 32545 kubelet.go:2268] node "asung" not found
 
1월 24 03:35:16 aive-cloud kubelet[32545]: E0124 03:35:16.208983 32545 kubelet.go:2268] node "asung" not found
 
1월 24 03:35:16 aive-cloud kubelet[32545]: E0124 03:35:16.309227 32545 kubelet.go:2268] node "asung" not found
 
 
 
#혹은
 
$ journalctl -u kubelet | tail -n 10

 

4. kubelet.go node "asung" not found 라는 메세지를 발견,, 이걸 힌트로 삼아 리서치...

 

kubelet에서 인식하는 nodeName은 컴퓨터의 hostname이다. 즉 kubelet에서 nodeName을 바꾸려면 host컴퓨터의 hostname을 변경하면 되는것!

 

하지만,, kubernetes 클러스터에서 설정되어 있는 NodeName은 위의 "kubectl get nodes"에서 보듯 "asung-cloud"이다.

예전에 테스트겸 hostname을 변경했던게 원인인듯 하하...

 

 

5. 해결방법은

 

 5-1) hostname을 "asung-cloud"로 변경하거나,

$ hostnamectl set-hostname asung-cloud

 

 5-2) 쿠버네티스 클러스터에 설정되어 있는 내용중에 nodeName부분을 변경하던가~~

 
$ kubectl edit node asung-cloud
 
error: At least one of apiVersion, kind and name was changed

 

--------------------------------------------------------------------------------------------------------------

edit을 통해서 변경할 경우, 이름을 직접 수정이 거부되네요, apiVersion과 kind, name은 변경할수 없는 리소스이기 때문에

저 세개중에 하나가 변경되었다면서 에러를 일으키고 거부되네요! 5-1번처럼 변경해줘야 되겠습니다~

 

 

이번 기회에 kubelet의 NodeName이 hostname과 연관있다는 사실을 알게되었네요..

저는 5-1의 hostname을 변경해서 문제를 해결했습니다.

 

출처 : 쿠버네티스(kubernetes) kubelet.go node not found #NotReady (tistory.com)

728x90
반응형