VM 재기동 시 dashboard 접속 불가 관련 프트러블슈팅 기록을 블로그로 남긴다.

 

1. 에러

VM 재기동 시 dashboard 외부 접속 불가하여 port-forward로 port open 하였더니 CPU 부하로 터미널 정지됨

현상: 대시보드 접속을 위해 kubectl port-forward 실행 중 시스템 전체가 멈춤(Hang).
로그 에러: kernel:watchdog: BUG: soft lockup - CPU#0 stuck for 35s!.
영향: 터미널 입력 불능 및 쿠버네티스 컨트롤 플레인 통신 마비.

 

2. 원인

  • 리소스 과부하 (Resource Exhaustion): 마스터 노드에 API 서버, 네트워크(Calico), 모니터링(Metrics Server), 대시보드가 밀집되어 기동 시 CPU 점유율이 임계치를 초과함.
  • 통신 방식의 비효율성: port-forward는 사용자 PC와 VM 간의 터널링을 위해 실시간 CPU 인터럽트를 과다하게 발생시킴. 저사양 환경에서 이 인터럽트 처리가 밀리며 커널이 락업(Lockup)에 빠짐.
  • 접속 설정의 폐쇄성: 기본 설치된 대시보드는 ClusterIP(내부용) 타입으로, 외부 브라우저에서 직접 접근이 불가능하여 사용자가 무리한 터널링을 시도하게 유도함.

3. 해결

Vagrant 파일에 아래 script 추가함

-> 서비스를 ClusterIP에서 NodePort로 변경하여 VM IP의 특정 포트(30000)를 대시보드에 직접 할당 등

 


echo '======== [9-2] Dashboard 설치 ========‘

echo '======== ***** 대시보드 외부 오픈 (추가) ***** ========‘
# [설정 1] NodePort 30000번으로 고정
sleep 10  # <--- 대시보드 API가 준비될 시간을 줌
kubectl patch svc kubernetes-dashboard -n kubernetes-dashboard -p '{"spec": {"type": "NodePort", "ports": [{"port": 443, "nodePort": 30000, "targetPort": 8443}]}}’
# [설정 2] 로그인 화면에서 Skip 버튼 활성화
kubectl patch deployment kubernetes-dashboard -n kubernetes-dashboard --type 'json' -p '[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--enable-skip-login"}]’
# [설정 3] Skip 버튼 클릭 시 관리자 권한 부여
kubectl create clusterrolebinding dashboard-skip-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:kubernetes-dashboard
echo '======== ***** 대시보드 외부 오픈 (추가) 끝 ***** ========‘

 

 

여러모로 알아야 할 게 많다.

+ Recent posts