분석도구의 특정 엔진이 비활성화 상태일 때

작성자 김민태 수정일 2022-10-17 16:43

#스파클링소다, #jupyterhub, #kubernetes, #k8s, #pending

아티클 관련 제품: SparklingSoDA3.0

들어가며

  • Kubernetes 제품군을 사용하다 보면 분석 엔진이나 파드에 이상이 생길 수 있습니다.
  • 이 경우 직접 아래의 가이드를 참고하여 문제가 생긴 파드들의 상태를 점검 할 수 있습니다.



목록



내용

  • 먼저 마스터 노드로 이동하여 아래의 명령어를 입력합니다.


kubectl get pod --all-namespaces


  • 위 명령어 조회시 특정 엔진이나 파드 들이 Pending 상태거나 crashLoopBack 상태 혹은 ImagePullBackErr들이 발생 할 수 있습니다.





CrashLoopBack 상태



ImagePullBackErr 상태


그 이 외에도 Running (or Complete) 상태가 아닌 파드가 있다면 비정상적인 파드입니다. 


이런 경우 아래의 명령어의 출력 결과들을 애자일소다 엔지니어에게 보내주면 해당 로그를 통해 빠른 원인 분석을 통해 대응 할 수 있습니다. 







기본적인 점검 방법


✓ CrashLoopBack 에러일 경우



- CrashLoopBack 에러의 경우 복합적인 많은 에러가 발생할 수 있습니다.




컨테이너가 하나 뿐인 파드의 로그 저장
Kubectl logs <파드네임> -c <컨테이너 이름> 명령어를 통해 
  • 출력 된 로그를 애자일소다 담당 엔지니어 메일로 전송 부탁드립니다.



로그를 파일로 쉽게 저장하여 메일로 첨부하는 방법 


컨테이너가 하나 뿐인 파드의 로그 저장 
kubectl logs <파드네임> > log.txt. 

컨테이너가 여러개인 파드의 로그 저장 
kubectl logs <파드네임> -c <컨테이너> > log.txt 


파드의 컨테이너가 몇개 인지 확인하는 방법



READY 부분의 1/1 일경우 1개,  2/2일경우 2개 입니다.  


여러개의 컨테이너가 존재하는 경우 아래와 같이 파드의 컨테이너 중 한개를 선택하라고 메세지가 출력 됩니다. 



kubectl logs jupyterhub-2-0-7-1-8544fc5969-zvbnb > log.txt 

Error from server (BadRequest): a container name must be specified for pod jupyterhub-2-0-7-1-8544fc5969-zvbnb, choose one of: [hub proxy] 


위와 같이 맨 뒤 쪽에 hub와 proxy 중에 하나의 컨테이너를 선택하라는 메세지가 출력되며 모든 컨테이너의 로그를 전송 부탁드립니다. 


kubectl logs <파드이름> -c hub    > 파드이름_log_hub.txt 

kubectl logs <파드이름> -c proxy > 파드이름_log_proxy.txt 




ImagePullBackErr 에러일 경우


Kubectl describe pod 조회시 아래와 같은 이벤트 로그 발생 


위와 같은 에러 발생시 NEXUS Repository로 부터 Image를 인식하지 못 한 경우 입니다. 



점검 순서 
    NEXUS Repository 정상 실행 체크 
    NEXUS Repository의 해당 이미지:태그 가 존재하는지 확인 
    # docker login http://repo.sparklingsoda.io:12000  명령어를 통해 login이 가능한지 확인 
    # cat /etc/docker/daemon.json에 인가된 사설 저장소로 등록되어 있는지 확인 


위 사항에 문제가 없을 경우 애자일소다 담당 엔지니어에게 연락 바랍니다. 


Pending 에러일 경우


Pending 에러의 경우 파드가 기동할 수 없는 에러가 발생하여 기동 보류 중인 상태입니다.


엔진 자체가 기동 되지 못 하여 log파일이 기록되지 않았을 확률이 높으므로 describe pod 명령어로 해당 파드의 상태를 확인합니다.
kubectl describe pod  <파드이름>  (-n <네임스페이스>) 

Events: 

  Type     Reason            Age   From               Message 

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

  Warning  FailedScheduling  4d4h  default-scheduler  0/2 nodes are available: 1 node(s) didn't match node selector, 1 node(s) had taint {node.kubernetes.io/disk-pressure: }, that the pod didn't tolerate. 

만약 위와 같은 에러 메세지가 출력 될 경우 CPU및 MEM의 리소스가 부족하여 파드가 기동되지 못 하는 경우 입니다.

(숫자는 0/2 0/3 등등 다양할 수 있습니다.)


Describe 에 설명 된 자원의 리소스를 늘려서 재기동 합니다. 





마무리

  • 기타 다른 에러의 경우에는 애자일소다 담당 엔지니어에게 연락 바랍니다. 

아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.

02-558-8300