Programming/기타

Rancher Logging (Banzai Logging Operator) 사용 시 에러케이스 1) Docker log 파일이 외부 경로를 참조할 때

라우드니스 2021. 4. 17. 16:05

현재 회사에서 사용하고 있는 노드들의 경우 disk가 여러개 있어서 용량과 속도가 많은 쪽에 docker 파일들을 mount하도록 설정하여 사용하고 있다. 이 경우 Rancher logging - v2.5.0 이전 버전은 Rancher 메뉴 중 tools -> logging 탭의 기능, v2.5.0 이상부터는 banzai cloud의 logging operator - 기능들이 정상적으로 작동하지 않는다. logging daemonset이 작동할 때 기본적으로 /var/log/containers 안에 경로만 mount하기 때문에 로그를 접근하려고 하다가 외부 경로가 mount가 되어 있지 않으니 로그를 읽지 못하는 것.

Rancher < v2.5.0

Rancher v2.5.0 이전 버전의 경우 이 경우 logging을 위해 뜬 fluentd의 pod 로그를 확인하면 /var/log/containers 안에 로그가 참조하는 외부 경로를 찾지 못해 no such file or directory 에러를 확인할 수 있고 관련 fluentd daemonset에 해당 host path를 추가해주는 형식으로 문제를 해결 할 수 있다.

Rancher >= v2.5.0

Rancher v2.5.0부터는 Cluster Manager의 Tools -> Logging 메뉴가 아닌 Cluster Explorer에 있는 Logging chart를 통해 Banzai cloud의 logging operator를 설치하는 방식으로 해당 기능을 변경했으며 해당 chart 설치만으로 logging에 관련된 기능들을 rancher에 설치할 수 있다. (관련 문서)

 

Logging in Rancher v2.5

 

rancher.com

 개인적으로 새로운 버전의 logging 방식으로 변경을 진행했는데 결론적으로 이전 버전과 동일하게 외부 경로를 읽지 못해 logging이 정상적으로 진행되지 않고 있었지만 banzai logging operator를 통해 실행된 fluentbit 내에서는 이를 가시적으로 확인할 수 있는 방법이 없었다. fluentbit pod의 로그 확인 시 에러 로그가 발생하지 않았고, pod의 event 등을 통해서도 알 수가 없었기 때문. 이미 동일한 문제를 겪었기 때문에 daemon set과 pod의 yaml 확인 및 pod 내에 붙어서 docker log 경로 확인 후 해당 에러를 확실히 인지할 수 있었다.

 

동일한 에러이다 보니 이를 이전 버전과 동일하게 fluent bit daemonset의 yaml을 수정할까 하다가, 더 나은 방식을 찾기 위해 banzai logging operator의 chart를 확인해 보니 내부적으로 extra volume mount를 할 수 있도록 설정하는 기능을 갖고 있었다. Banzai Logging operator - Logging 정의 파일을 확인하면 fluentbit 아래 extraVolumeMounts 값을 추가하면 이 설정을 읽어서 fluentbit daemonset이 자동으로 해당 hostpath를 mount하도록 다시 배포가 진행 된다. 다만 아쉬운 점은, 애초에 rancher에 Logging 기능을 추가할 때 해당 설정을 넣어서 Logging 정의 파일을 만들도록 하는 것은 없어 보인다. 

해당 링크는 반영이 안된다는 이슈 글이지만, 해당 글의 yaml 파일을 참조하여 fluentbit에 extraVolumeMounts를 추가하도록 설정하면 설정한 외부 경로가 daemonset에 반영되어 실행될 것이다. 

 

extraVolumeMounts not mounting volumes · Issue #369 · banzaicloud/logging-operator

Bugs should be filed for issues encountered whilst operating logging-operator. You should first attempt to resolve your issues through the community support channels, e.g. Slack, in order to rule o...

github.com

 

반응형