日志文件位于使用 Containerd 运行时的 K8s 集群中的什么位置?

问题描述

我使用的是 1.19 版的 AKS 集群,我发现这个版本的 K8s 使用 Containerd 而不是 Dockershim 作为容器运行时。 我还使用 Fluentd 从我的 spring 应用程序收集日志,使用 k8s 1.18 版可以正常工作,但是使用 k8s 1.19 版我无法从我的 spring 应用程序收集日志。 我使用 this file 作为我的 Fluentd DeamonSet。 我想知道我的应用程序的日志文件是否不在 var/log/containers 中,这是正确的吗?

解决方法

我在这里找到了解决方案:use-cri-parser-for-containerdcri-o-logs

默认情况下,这些图像使用 json 解析器解析 /var/log/containers/ 文件,因为 docker 生成 json 格式的日志。另一方面, containerd/cri-o 使用不同的日志格式。要解析此类日志,您 需要改用 cri 解析器。

我们需要使用 cri 解析器构建一个新的流畅图像,这对我有用。