【问题标题】:Change kubernetes (kubeadm) logging away from /var/log/messages从 /var/log/messages 更改 kubernetes (kubeadm) 日志记录
【发布时间】:2019-01-15 18:18:41
【问题描述】:

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

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

【问题讨论】:

    标签: logging kubernetes


    【解决方案1】:

    然而,所有的日志都将转到 /var/log/messages,这使得 centos 系统日志难以阅读。有没有办法让 kubeadm/kubernetes 改为登录到 /var/log/kubernetes?

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

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

    在查看docs1.13 版本和最新的stable Docker 版本时,他们说的或多或少是一样的:

    如果不指定日志驱动程序,则默认为 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 的符号链接。

    如果您确实配置了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 选项并指向另一个位置。

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

    【讨论】:

    • 我听从了您的提示,谢谢,并将您的问题标记为答案,但是我仍然在消息中写了一些小东西:8 月 12 日 03:25:49 kube-dev-master0 kubelet: W0812 03:25:49.673951 xxx container_manager_linux.go:792] 未为 pid 启用 CPUAccounting:xxxx 8 月 12 日 03:25:49 kube-dev-master0 kubelet:W0812 03:25:49.673961 xxxx container_manager_linux.go:795] MemoryAccounting 未启用进程号:xxxx。有没有办法移动这些?
    • @warhansen,我编辑了我的答案并添加了关于 kubelet 日志记录的部分。希望这对您有所帮助!
    猜你喜欢
    • 1970-01-01
    • 2013-07-05
    • 2018-07-29
    • 2015-12-07
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多