【问题标题】:kubernetes pod logging broken with journald logging driver使用 journald 日志记录驱动程序破坏 kubernetes pod 日志记录
【发布时间】:2020-11-11 15:09:41
【问题描述】:

看起来 journald pod 日志记录('kubectl logs' 命令)不适用于 kubernetes v1.18.x。有没有办法让它与 v1.18.x 一起工作?我已经设置了一个多节点集群,将 docker 日志驱动程序作为“journald”(使用 /etc/docker/daemon.json)并使用带有拉取方法的 systemd-journal-gatewayd 来聚合历史日志。但是,我对能够使用 'kubectl logs' 或 'kubectl logs -l 'app=label' --prefix -f' (用于集群范围的日志)来跟踪当前日志非常感兴趣。

# kubectl version
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.3", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.3", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}

# docker version
Client:
 Version:      18.03.1-ce
 API version:  1.37
 Go version:   go1.9.5
 Git commit:   9ee9f40
 Built:        Thu Apr 26 07:20:16 2018
 OS/Arch:      linux/amd64
 Experimental: false
 Orchestrator: swarm

Server:
 Engine:
  Version:      18.03.1-ce
  API version:  1.37 (minimum version 1.12)
  Go version:   go1.9.5
  Git commit:   9ee9f40
  Built:        Thu Apr 26 07:23:58 2018
  OS/Arch:      linux/amd64
  Experimental: false

# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"

运行“kubectl logs”会出现以下错误:

# kubectl logs <pod-name>
failed to try resolving symlinks in path "/var/log/pods/default_<pod-name>_xxxx/<container-name>/0.log": lstat /var/log/pods/default_<pod-name>_xxxx/<container-name>/0.log: no such file or directory

【问题讨论】:

    标签: docker kubernetes systemd-journald docker-logs


    【解决方案1】:

    更改日志驱动程序后,日志的位置已更改为主机的日志。到目前为止,docker 可以检索日志,但您必须让 kubelet 知道更改。

    您可以通过将 --log-dir=/var/log 传递给 kubelet 来实现。 添加标志后,您已运行 systemctl daemon-reload 并重新启动 kubelet。它必须在所有节点上完成。

    【讨论】:

    • 使用 --logtostderr=false--log-dir=/var/log 并且它有效。谢谢! :)
    猜你喜欢
    • 2018-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2023-03-14
    相关资源
    最近更新 更多