|
$ 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)
'IT > CLOUD(AWS,Azure,GCP,Docker)' 카테고리의 다른 글
쿠버네티스 - 계정 인증과 권한 인가(보안) (0) | 2022.06.20 |
---|---|
Helm 설치하기 (0) | 2022.06.20 |
[Kubernetes] 쿠버네티스 "coredns CrashLoopBackOff", "x.x.x.x:443: connect: no route to host" 에러 (firewalld) (0) | 2022.06.19 |
[Kubernetes] 쿠버네티스 클러스터 구축 (0) | 2022.06.19 |
Kubernetes #3. 쿠버네티스 Unable to connect to the server: x509 에러 (0) | 2022.06.19 |