해당 내용은 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 파드의 로그를 확인하고 데이터베이스에 오류가 있는지 확인합니다.
'MLOps > Doker & Kubernetes' 카테고리의 다른 글
Udemy CKA 강의 정리 254: Worker Node Failure (0) | 2023.02.01 |
---|---|
Udemy CKA 강의 정리 251: Control Plane Failure (0) | 2023.01.31 |
Udemy CKA 강의 정리 247: Download Presentation Deck (0) | 2023.01.28 |
Udemy CKA 강의 정리 246: Troubleshooting - Section Introduction (0) | 2023.01.28 |
Udemy CKA 강의 정리 245: Important Update: End to End Section (0) | 2023.01.28 |
댓글