본문 바로가기
MLOps/Doker & Kubernetes

Udemy CKA 강의 정리 248: Application Failure

by 공부하는 무니 2023. 1. 30.
반응형

해당 내용은 Udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의를 공부한 내용입니다. 내용을 그대로 번역하기보다는, 제가 이해하기 쉬운 대로 수정한 부분들이 있습니다.

⚠️ 영어 독해가 많이 부족합니다. 틀린 내용이 있으면 알려주시면 감사하겠습니다.


강의 과정을 수강해오면서, 우리는 실제로 각 주제에 대한 트러블슈팅을 해왔습니다. 따라서 많은 문제 해결이 이미 다뤄졌습니다. 여기서는 트러블슈팅 기술에 대한 개요와 절차를 살펴보고, 더 많은 실습을 할 예정입니다.

Application Failure

애플리케이션 오류부터 시작하겠습니다. 

Check Accessibility

웹과 데이터베이스를 가지고 있는 2계층 애플리케이션이 있습니다. 데이터베이스 파드는 데이터베이스 애플리케이션을 호스팅합니다. 그리고 데이터베이스 서비스를 통해 웹 서버에 서비스를 제공합니다. 웹 서버는 웹 파드에서 호스팅되고 웹 서비스를 통해 유저에게 서비스를 제공합니다. 

시작하기 전에 애플리케이션이 어떻게 구성되어 있는지 글을 쓰거나, map이나 표를 그려보는 것이 좋습니다. 오류에 대해 얼마나 알고있느냐에 따라 map의 양쪽 끝 중 어디에서 시작할 지 선택할 수 있습니다. 그러나 문제의 근본적인 원인을 찾을 때까지는 이 map에 있는 모든 오브젝트와 링크를 확인해야 합니다.

이번에는 유저가 애플리케이션 접근과 관련된 몇가지 이슈를 보고했다고 합시다. 그렇다면 먼저 애플리케이션 프론트엔드부터 시작합니다. 애플리케이션에 접근할 수 있는 경우에는 표준 테스트 방법을 사용하세요. 웹 애플리케이션인 경우에는 curl을 사용하여 웹 서버가 노드 포트의 IP에 접근할 수 있는지 체크하면 됩니다.

curl http://web-service-ip:node-port

Check Service Status

다음으로는 서비스를 체크합니다. 웹 파드의 endpoint를 발견했나요?

이 경우엔 찾았지만, 만약 못 찾았다면 파드 디스커버리 서비스를 체크하세요.

kubectl describe service web-service

서비스에서 구성된 selector와 파드에 있는 항목을 비교하고 일치하는지 확인하세요.

Check POD

다음으로 파드가 Running state인지 확인합니다.

kubectl get pod

파드의 STATUS와 RESTARTS를 보면 파드에 있는 앱이 작동하는지, 재시작되는지 알 수 있습니다.

describe 커맨드로 파드와 관련된 이벤트를 확인합니다.

kubectl describe pod web

 

logs 커맨드로 애플리케이션 로그를 확인할 수 있습니다. 오류로 인해 파드가 다시 시작되는 경우, 현재 버전의 컨테이너를 실행 중인 파드의 현재 버전 로그에는 마지막으로 실패한 이유가 반영되지 않을 수 있습니다.

kubectl logs web

따라서 -f 옵션을 이용해서 로그를 관찰하고 애플리케이션이 다시 실패하길 기다리거나, --previous 옵션으로 이전 파드의 로그를 봐야 합니다.

kubectl logs web -f --previous

Check Dependent Service

그 다음, 아까처럼 DB 서비스 상태를 체크하고, 마지막으로 DB 파드를 체크합니다.

DB 파드의 로그를 확인하고 데이터베이스에 오류가 있는지 확인합니다.

 

 

 

 

반응형

댓글