IT/CKA

[CKA독학] 트러블 슈팅 - Worker Node Failure

반응형

Worker Node Failure

WorkerNode에 생길 수 있는 이슈로는 kubelet이 제대로 동작하지 않는 경우 입니다. kueblet이 동작하지 않는 원인을 찾고 해결하는 과정을 정리해보도록 하겠습니다.

Case

  • Not reday상태의 WorkerNode에서 kubelet이 죽어있는 경우 - inactive(dead)
  • Not reday상태의 WorkerNode에서 kubelet이 활성화 되고 있는 중인 경우 - activating(auto-restart)
  • Not reday상태의 WorkerNode에서 kubelet이 동작하고 있는 경우 - active(running)

WorkerNode의 kubelet이 죽어있는 경우 - inactive(dead)

  1. Node상태 확인
kubectl get nodes
  1. 이상 발견 : Not ready 상태인 노드로 원격접근(ssh) 하여 kubelet 상태 확인
ssh node01
systemctl status kubelet
  1. kubelet 의 Active값이 inactive(dead)인경우 kubelet 을 실행
systemctl start kubelet
  1. kubelet이 잘 동작하였는지, 상태 확인
systemctl status kubelet
  1. kubelet의 Active값이 activ(running)인경우 마스터노드로 돌아가서 다시 노드 상태 확인
exit
kubectl get nodes

WorkerNode의 kubelet이 활성화 되고 있는 중인 경우 - activating(auto-restart)

  1. Node상태 확인
kubectl get nodes
  1. 이상 발견 : Not ready 상태인 노드로 원격접근(ssh) 하여 kubelet 상태 확인
ssh node01
systemctl status kubelet
  1. kubelet 의 Active값이 activating(auto-restart) 인경우
  • kubelet이 동작하는 중에 이슈가 발생한 경우 이므로 서비스 실행 로그 확인
journalctl -u kubelet
참고 : journalctl이란 systemd의 서비스 로그를 확인할 수 있는 명령어 b(이전 페이지로 이동), z(다음페이지로 이동), q(나가기)
  1. 오류 메시지 확인
  • 아래 오류메시지는 해당 경로의 crt파일을 읽어올 수 없다는 오류
unable to load client CA file /etc/kubernetes/pki/WRONG-CA-FILE.crt
  1. /etc/kubernetes/pki/WRONG-CA-FILE.crt 이상 유무 확인
ls /etc/kubernetes/pki
  1. 이상 발견 : crt이름이 다르거나 경로가 다름
  • 마스터 노드의 kueblet config yaml파일 에서 원하는 경로로 변경해야함
  • kueblet config yaml 경로 확인
cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
# config.yaml 경로 : KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml
  1. kubelet config yaml 에서 crt정보 변경
vi /var/lib/kubelet/config.yaml
# 수정전 clientCAFile: /etc/kubernetes/pki/WRONG-CA-FILE.crt 
# 수정후 clientCAFile: /etc/kubernetes/pki/ca.crt
  1. kubelet 재시작
systemctl restart kubelet

WorkerNode의 kubelet이 동작하고 있는 경우 - active(running)

  1. Node상태 확인
kubectl get nodes
  1. 이상 발견 : Not ready 상태인 노드로 원격접근(ssh) 하여 kubelet 상태 확인
ssh node01
systemctl status kubelet
  1. kubelet 의 Active값이 active(running)인경우
  • kubelet이 동작하고 있으나 제대로 동작하고 있는 상태가 아니므로 서비스 실행 로그 확인
journalctl -u kubelet
참고 : journalctl이란 systemd의 서비스 로그를 확인할 수 있는 명령어 b(이전 페이지로 이동), z(다음페이지로 이동), q(나가기)
  1. 오류 메시지 확인
  • 아래 오류 메시지는 api server 를 등록할 수 없다는 오류
Unable to register node "node01" with API server: Post "https://172.17.0.28:6553/api/
  1. 마스터 노드로 가서 api server endpoint 확인
kubectl get ep 
# https://172.17.0.28:6443
  1. 이상 발견 : api server endpoint가 잘못 되었음
  • 마스터 노드의 kueblet config conf파일 에서 원하는 경로로 변경해야함
  • kueblet config conf경로 확인
cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
# conf 경로 : KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf
  1. kueblet config conf에서 올바른 api server endpoint 정보로 변경
vi /etc/kubernetes/kubelet.conf
# 수정전 server: https://172.17.0.28:6553 
# 수정후 server: https://172.17.0.28:6443
  1. kubelet 재시작
systemctl restart kubelet
반응형