gpt4 book ai didi

logging - 从/var/log/messages 更改 kubernetes (kubeadm) 日志记录

转载 作者:行者123 更新时间:2023-12-02 11:35:44 24 4
gpt4 key购买 nike

我们有一个在 Centos 7 上运行的 kubernetes 集群。但是,所有日志都将转到/var/log/messages,这使得 centos 系统日志难以阅读。有没有办法让 kubeadm/kubernetes 登录到/var/log/kubernetes 而不是?

我们已经将我们的应用程序(pod)日志发送到挂载点。我们需要移动 kubernetes 的 stderr 日志。

最佳答案

However all logging is going to /var/log/messages which is making centos system logs hard to read. Is there a way I can tell kubeadm/kubernetes to log to /var/log/kubernetes rather?



不,不完全是,但您可以重新配置 Docker 以使用不同的方式登录。

这可能取决于您正在运行的 Docker 版本,但在我的 CentOS 7 VM(几周前)中,我正在运行 Docker 版本 1.13.1 , 通过 yum 安装.

通过 docs 查看时对于版本 1.13和最新的 stable他们说的或多或少相同的 Docker 版本:

If you do not specify a logging driver, the default is json-file.



我通过 yum 安装的 Docker 版本在启动 Docker 时加载的环境文件 ( /etc/sysconfig/docker) 中有以下行:
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'

如您所见,日志记录驱动程序配置为 journald ,这应该是您在 /var/log/messages 中看到来自容器的日志的原因.您可以检查配置了哪些日志记录驱动器:
docker info | grep 'Logging Driver'

日志驱动程序决定所有日志的位置,在 Docker 中意味着 stderrstdout从容器发送。 Docker 支持几种不同的 logging drivers ,如果您选择配置例如 json-file如果您想从操作系统的角度重新定位日志记录(“更改”日志路径),这可能是最佳选择。每个 Docker 容器都会有自己的日志写入 /var/log/pods/<ID>/<NAME>/<LOGFILE> ,实际上日志文件是指向 /var/lib/docker/containers/<ID>/<ID>-json.log 的符号链接(symbolic link).

如果你配置 json-file然后删除 --log-driver=journald标记,而是在 /etc/docker/daemon.json 中配置它文件,在文档中提到。与 json-file您可以配置日志轮换和日志文件大小等内容,请咨询 docs更多选择。

通过 daemon.json 配置时文件这成为一个全局设置,你总是可以用 docker run ... --log-driver 覆盖用于特定容器的日志记录驱动程序.

这些日志记录更改适用于 Docker 中运行的所有内容,例如移动日志记录。 kubelet它在您的主机上与 Docker 一起运行,您可以查看可配置的 options .默认 kubelet stderr日志通过 journald 记录最终出现在 /var/log/messages , 要改变这种行为可以添加 --log-dir选项并指向另一个位置。

归根结底,我认为最好考虑一下日志传送并调查其他日志驱动程序是否适合您的环境。

关于logging - 从/var/log/messages 更改 kubernetes (kubeadm) 日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51747434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com