Azure Kubernetes Service, application logging 뭘 써야할까? - 3

눕눕·2022년 3월 17일
0

AKS logging

목록 보기
3/3

AKS node 안으로 왜 들아가나?

나는 어떤 부분을 파악할 때, 가능하다면 실제로 보는 것들을 선호한다.

고등학교 때, 잘 못하긴 했지만 물리에 큰 흥미를 느꼈던 것도 같은 이유다.

lab에서 중력 실험 후, 실제 실험 결과 기반으로 제출되야 했기에, 지구 중력이 20g로 lab report가 마무리 되었다는건 비밀

직접 해보면 신기하기도하고 재미도 있기에, AKS node 안으로 들어가서 직접 어떻게 돌아가나 확인해 보자!!

단지 재밌기 때문에 들어간다.

AKS node 안 탐험하기

먼저 아래의 명령어를 순서대로 입력하여, 특정 이미지를 통해 노드에 접근한다.

노드명 확인
kubectl get node

kubectl debug node/노드이름 -it --image=mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11

chroot /host

들어가면 빠르게, /var/log/containers로 경로를 이동해보자!

각 container들이 뱉어내고 있는 로그들이 한 directory에 모여있네? 신기하네?

링크가 걸려 있었구나?

링크된 경로는 /var/log/pods/pod이름/컨테이너이름/0.log에 있다.
아마, log centralizing을 위해, 각 container에서 생성되는 log 파일들을, 가져가기 쉽게 /var/log/containers 밑으로 link 걸어 놓는것 같다.

실제 로그파일이 있는 경로에서 0.log 파일을 삭제후, kubectl logs pod이름 으로 log를 살펴보면, 이전 log들이 삭제되고 새로 쌓이게 된 로그들만 보이게 된다.

진짜 확인했다구!
로그가 특이한건, python으로 stdout stderr 찍어보던 코드라 지저분하다.

정리해보자면,

각 노드마다, /var/log/containers 에 실제 파드에서 생성되는 로그들이 링크가 걸려 들어가 있으며, 실제 위치는 /var/log/pods/pod이름/컨테이너이름/로그파일명.log 이다.

각 node 에서 구동되는 container의 stdout, stderr를 특정 경로에 저장/링크 해놓기에, cluster 레벨에서 logging은 각 node별 해당 경로에 있는 로그만 긁어서 한곳에 저장하고 보여주면 되는 것이다.

node에 문제가 발생하면, 안타까운 상황이 발생(눕눕아 거기 node 왜죽었는지 원인 파악해서 보고해라)이 되기에, 많이들 사용하는 logging stack들(plg, efk 등)은 daemonset으로 각 노드에 떠있으며, 설정된 저장소로 로그를 보낸다.

plg, efk 스택들은 추후에 따로 정리해서 올려볼 생각이다.
이것두 이미 테스트는 다했는데 깔끔한 정리가 힘들다구ㅠㅠ

진짜라구 믿어줘

다음에 시간이 될때 plg 스택에 대해서 자세히 다루어 보겠다!!

profile
n년차 눕눕

0개의 댓글