애플리케이션 레벨 트러블 슈팅
애플리케이션 레벨 트러플 슈팅 과정
1. 외부 접근 가능 여부 확인
curl http://<web-service-ip>:<node-port>
curl명령어를 사용해서NodePort또는LoadBalancerIP로 접속을 시도한다.
2. 서비스 및 엔드포인트 확인
kubectl describe service <service-name>
Service의Selector와Pod의Label이 일치하는지 비교한다.- 또한,
Endpoints항목에Pod의 IP가 올바르게 기입되어있는지 확인한다.- 만약 비어잇다면
Selector설정 오류일 확률이 높다.
- 만약 비어잇다면
3. Pod 상태 및 이벤트 확인
kubectl get pods
kubectl describe pod <pod-name> # Pod의 이벤트 로그(Events) 확인
Pod의 상태가Running인지, 혹은CrashLoopBackOff인지 확인한다.RESTARTS횟수가 높다면 애플리케이션 내부 오류를 의심해야 한다.'
4. 애플리케이션 로그 분석
kubectl logs <pod-name>
kubectl logs <pod-name> --previous # 재시작 전의 마지막 로그 확인
- 실시간 로그 확인:
-f옵션 Pod가RESTART되어 현재 로그만으로는 파악이 어려울 경우--previous옵션을 사용한다.
5. 데이터베이스 계층 확인
- 다른 모든 사항이 정상인데도 오류가 발생한다면 DB 계층을 점검한다.
- DB
Pod, DBService등
- DB
레퍼런스
- https://kubernetes.io/ko/docs/tasks/debug/debug-application/
- Udemy - Certified Kubernetes Administrator (CKA) with Practice Tests (Mumshad)