아티클 관련 제품: 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 에 설명 된 자원의 리소스를 늘려서 재기동 합니다.
마무리
기타 다른 에러의 경우에는 애자일소다 담당 엔지니어에게 연락 바랍니다.
아티클이 유용했나요?
훌륭합니다!
피드백을 제공해 주셔서 감사합니다.
도움이 되지 못해 죄송합니다!
피드백을 제공해 주셔서 감사합니다.
피드백 전송
소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.