나는 여전히 병합 / 분할 접근법을 찾고 있지만 Kubernetes 문서에서 권장하는이 접근법은 올바른 해결책처럼 보입니다 . 각 개별 로그마다 사이드카 컨테이너를 사용하십시오 .
"사이드카"는 다른 도커 컨테이너와 함께 어떤 방식 으로든 사용하는 도커 컨테이너입니다. 이 경우, 세 개의 로그 각각에 대해 로그를 스캔하거나 테일링하고 stdout으로 출력하는 별도의 컨테이너가 있습니다.
이렇게하면 각 로그 사이드카 컨테이너에 자체 stdout의 자체 도커 로그가 있습니다. 이와 같이 분리하면 표준 도커 및 kubernetes 등을 사용하여 분리 또는 집계 할 수 있습니다. Kubernetes 페이지의 내용은 다음과 같습니다.
이 방법을 사용하면 응용 프로그램의 여러 부분에서 여러 로그 스트림을 분리 할 수 있으며이 중 일부는 stdout 또는 stderr에 대한 쓰기 지원이 부족할 수 있습니다. 로그 리디렉션의 논리는 최소이므로 큰 오버 헤드가 거의 없습니다. 또한 stdout 및 stderr이 kubelet에서 처리되므로 kubectl 로그와 같은 내장 도구를 사용할 수 있습니다.
"별도의 로그 스트림"은 docker documentation에 설명 된 docker 가 다른 컨테이너의 로그에 적용하는 내장 태그에서 비롯됩니다 .
태그 로그 옵션은 컨테이너의 로그 메시지를 식별하는 태그의 형식을 지정하는 방법을 지정합니다. 기본적으로 시스템은 컨테이너 ID의 처음 12자를 사용합니다. 이 동작을 무시하려면 태그 옵션을 지정하십시오.