IT/Mendix

[Mendix][PrivateCloud]07 minikube ERROR 확인 하기

Duruwa 2020. 3. 31. 14:02

실습은 윈도우 10 데스크톱에서 진행되었다

 

 

Private Cloud로 Deplpoy 하다 보면 Fail이 발생하거나 무한 Deploy(?) (Deploy가 완료되지 않는 현상)가 발생하는 경우가 있다

 

이럴 경우에는 kubernetes에 접속하여 log를 보고 원인 파악을 해야 한다

 

이번 글에서 진행될 예제는 Mendix에서 Start Your First App 샘플 프로젝트를 Private Cloud에 Deploy 했을 경우 Deploy가 완료되지 않는 현상을 예로 든다

샘플 프로젝트

 

샘플 프로젝트를 Private Cloud에 Deploy 하면 Deploy가 완료 되지 않는 현상이 발생한다

Deploy가 완료 되지 않음

 

우선 kubernetes 대시보드를 통해 원인 파악을 해보겠다

Git bash에서 다음 명령어를 입력한다

minikube dashboard

minikube dashboard

 

실행이 완료되면 웹브라우저에서 대시보드가 출력된다

네임스페이스를 모든 네임스페이스로 바꾸면 어떤 pod에서 에러가 발생하는지 확인이 가능하다

대시보드 에러 확인

 

Git bash에서도 확인이 가능하다

전체 네임스페이스에서 에러가 발생한 pod 확인하는 명령어이다

Git bash에서 다음 명령어를 입력한다
kubectl get pods -o wide --all-namespaces  

pod 상태 확인

kubetest-testpc-0 pod가 STATUS가 CrashLoopBackOff

pod가 정상 실행되지 않아 Deploy가 완료되지 않은 것이다

 

pod의 정보를 보기 위해서는 namespace, pod name이 필요하다

다음 명령어는 현재 클러스터에 있는 namespace 리스트출력하는 명령어이다

Git bash에서 다음 명령어를 입력한다
kubectl get namespace 

namespace 확인

내가 생성한 namespace가 보인다

 

이제 pod의 name을 알아내야 한다

특정 namespace에 있는 pod 리스트를 보여주는 명령어는 다음과 같다
$kubectl get pod -n [namespace 이름] 

Gitbash에서 다음 명령어를 입력한다
kubectl get pod -n demo-namespace

pod 확인

 

이젠 모든 정보들이 모였다

특정 pod 정보 보기 명령어는 다음과 같다
$kubectl describe -n [namespace 이름] pods [pod 이름] 

Git bash에서 다음 명령어를 입력한다
kubectl describe -n demo-namespace pods kubetest-testpc-0

pod 정보 확인

state가 Waitting이다 그 이유는 CrashLoopBackOff 이기 때문이다

하단 아래쪽으로 이동하면 Event 로그를 볼 수 있다

pod 이벤트 로그 확인

이벤트 로그에서는 자세한 정보가 안 나오는 것 같다

 

 

pod로그로 자세한 내용을 보도록 하겠다

pod 로그 보는 명령어는 다음과 같다

$kubectl logs [pod 이름] -n [namespace 이름]
kubectl logs kubetest-testpc-0 -n demo-namespace

pod 로그 확인

 

컨테이너 1개를 선택해달라고 한다

어떤 컨테이너인 줄 몰라 minikube dashboard에서 확인해보았다

처음에 실행한 kubenetes 대시보드에서

네임스페이스를 demo-namespace(App이 배포된 Cloud 선택)을 선택하고 파드를 클릭하여 에러난 파드의 정보를 확인한다

kubernetes 대시보드에서 pod 정보 확인

 

제일 마지막 부분을 보게 되면 컨테이너 부분에 mendix라고 보인다

m2ee-sidecar, m2ee-metrics는 kubernetes에서 사용하는 컨테이너 같다

컨테이너 명 확인

 

 

다시 명령어를 수정하여 입력한다

kubectl logs kubetest-testpc-0 -n demo-namespace mendix

pod의 에러 로그 확인

 

로그를 보니 CRTICAL 레벨의 에러가 보인다

Afterstartup에서 에러가 발생하는 것 같다

프로젝트를 열어 AfterStartup을 제거하고 다시 배포하도록 한다

 AfterStartup을 제거

 

소스를 commit 하고 다시 Deploy하니 정상적으로 Deploy가 되었다

 

App URL에 접속하니 정상적으로 App이 실행되었다

 

예제처럼 App 실행이 제대로 안됬을 경우에는 kubernetes의 node, pod, container에 에러가 발생했는지 확인 후

조치를 취하면 된다

 

*정리*

대시보드
minikube dashboard

전체 네임스페이스에서 에러가 발생한 pod 확인
kubectl get pods -o wide --all-namespaces  

현재 클러스터에 있는 namespace 리스트 확인
kubectl get namespace 

특정 namespace에 있는 pod 리스트 확인
$kubectl get pod -n [namespace 이름] 
kubectl get pod -n demo-namespace

특정 pod 정보 확인
$kubectl describe -n [namespace 이름] pods [pod 이름] 
kubectl describe -n demo-namespace pods kubetest-testpc-0

특정 pod 로그 확인
$kubectl logs [pod 이름] -n [namespace 이름] [컨테이너 이름]
kubectl logs kubetest-testpc-0 -n demo-namespace mendix