개발자

[쿠버네티스 질문] #pod #log #stdout

2024년 07월 17일조회 39

pod가 스케쥴링되면서 표준출력이 스케쥴링된 노드의 특정path(/var/log/containers/)에 남는데 안 남는 경우는 어떤 경우가 있을까요? 해당 pod내에 컨테이너로 접속해서 로그를 직접 보는것도 가능하며 kubectl logs 명령어로도 로그는 존재합니다. 그러다보니 promtail이 해당 노드에 존재함에도 로그데이터를 못 가져오는 일이 생기고 로그데이터를 수집하는 입장에서 모든 pod들의 마운트를 하나씩 설정할 수는 없는노릇이지 않나요..

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 0

답변이 없을 때 보이는 아이콘

첫 답변을 기다리고 있어요.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 07월 17일

쿠버네티스의 pod가 표준 출력을 /var/log/containers/ 에 기록하지 않는 경우는 크게 두 가지 입니다. 1. LogLevel 설정: 쿠버네티스 컴포넌트들 (API Server, Scheduler 등) 은 로그 수준을 설정할 수 있습니다. 이러한 컴포넌트들은 일반적으로 로그 수준을 조정하여 로깅의 상세한 정도를 제어하며, 이 때문에 일부 항목은 포함되지 않을 수 있습니다. 2. Standard Output/Error Redirection: 쿠버네티스의 애플리케이션은 표준 출력과 오류 스트림을 다른 위치로 리디렉션 할 수 있습니다. 이것이 발생하면, 해당 출력은 자동으로 /var/log/containers/로 전송되지 않습니다. 대부분의 경우, 애플리케이션이 STDOUT 및 STDERR 대신 파일에 직접 로그를 작성하는 경우 /var/log/containers/에 로그가 남지 않게 됩니다. 또한, kubectl logs 명령어는 pod 내에서 실행되는 컨테이너에서(STDOUT 또는 STDERR를 통해) 생성된 로그를 가져오므로 /var/log/containers 경로와 관계 없이 사용할 수 있습니다. Promtail이 모든 노드에서 로그 데이터를 제대로 가져오고 있는지 확인하기 위해, Promtail 구성 파일이 각 노드의 /var/log/containers/를 올바르게 참조하고 있는지 확인하는 것이 중요합니다. 그리고 필요에 따라 애플리케이션 로그 수준을 조정하거나 리디렉션 설정을 검토해 봐야 합니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!