“journalctl”从哪里读取配置?

“journalctl”从哪里读取配置?

我已经安装kubelet 1.26.0在我的Ubuntu 22.04机器上了。以前我有1.25.2通过命令删除apt remove kubelet并使用apt install kubelet命令重新安装的版本。无论我在哪里搜索kubelet的配置并查看它,它都会显示版本1.26.0,但是当我运行时journalctl -xu kubelet.service它会显示以下结果:

Dec 06 22:14:42 a systemd[1]: Started kubelet: The Kubernetes Node Agent.
░░ Subject: A start job for unit kubelet.service has finished successfully
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░ 
░░ A start job for unit kubelet.service has finished successfully.
░░ 
░░ The job identifier is 11743.
Dec 06 22:14:43 a kubelet[85576]: I1206 22:14:43.254559   85576 server.go:413] "Kubelet version" kubeletVersion="v1.25.4"
Dec 06 22:14:43 a kubelet[85576]: I1206 22:14:43.254699   85576 server.go:415] "Golang settings" GOGC="" GOMAXPROCS="" GOTRACEBACK=""
Dec 06 22:14:43 a kubelet[85576]: I1206 22:14:43.255385   85576 server.go:576] "Standalone mode, no API client"
Dec 06 22:14:43 a kubelet[85576]: I1206 22:14:43.295733   85576 server.go:464] "No api server defined - no events will be sent to API server"
Dec 06 22:14:43 a kubelet[85576]: I1206 22:14:43.295813   85576 server.go:660] "--cgroups-per-qos enabled, but --cgroup-root was not specified.  defaulting to /"
Dec 06 22:14:43 a kubelet[85576]: E1206 22:14:43.296299   85576 run.go:74] "command failed" err="failed to run Kubelet: running with swap on is not supported, please disable swap! or set --fail-swa>
Dec 06 22:14:43 a systemd[1]: kubelet.service: Current command vanished from the unit file, execution of the command list won't be resumed.
Dec 06 22:14:43 a systemd[1]: kubelet.service: Main process exited, code=exited, status=1/FAILURE
░░ Subject: Unit process exited
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░ 
░░ An ExecStart= process belonging to unit kubelet.service has exited.
░░ 
░░ The process' exit code is 'exited' and its exit status is 1.

它表明,"Kubelet version" kubeletVersion="v1.25.4"我也怀疑配置是否不符合我的预期,因此kubelet无法正常工作。但我不知道这个错误的配置从何而来以及如何修复它?

答案1

journalctl -xu kubelet.service节目全部kubelet.service当前存储在您的系统上的记录日志。删除服务不会自动删除它生成的日志条目。

请注意,您正在查看的消息日期为 12 月 6 日;如果您当时尚未安装 kubelet 1.26.0,则这些消息是由旧版本生成的,并且尚未从系统日志中过期。如果您kubelet在 12 月 6 日之后的某个时间安装了较新的版本,则一旦您在日志中前进,超过重新安装的时间,您应该会看到较新的版本。

按空格键或使用向下箭头键journalctl查看更多最新日志,或使用journalctl -xeu kubelet.service立即跳转到列表末尾的最新日志。


journalctl从 读取其配置/etc/systemd/journald.conf,但这对您没有多大帮助,因为它主要只处理日志的存储、日志条目的过期以及将日志消息转发到其他日志记录服务(如果已配置)。它通常没有特定于单个服务(例如kubelet.service.

如果您想确切地了解如何kubelet.service定义,您应该使用systemctl cat kubelet.service。该命令的优点是,它总是列出完全的服务定义如systemd所见,无论服务定义文件位于何处,或者是否在其之上应用了任何覆盖文件。


另请注意此消息:

"command failed" err="failed to run Kubelet: running with swap on is not supported, please disable swap! or set --fail-swa>

Kubelet 1.25.2 显然失败了,因为您在系统上启用了交换。

我预计 Kubelet 1.26.0 也会因同样的问题而失败,除非您也在 12 月 6 日至今的某个时间点禁用了交换,或者添加了

failSwapOn: false

设置为 kubelet 节点的配置,或添加中推荐的选项完全的ExecStart的行中出现错误消息kubelet.service


上面消息末尾>的 表示该消息的长度超出了您的终端所能容纳的长度,您可以使用 中的向右箭头键看到消息的其余部分journalctl。这也使得从输出中复制长日志消息变得更加困难journalctl,我认为这很烦人。

如果您(像我一样)不喜欢这种journalctl行为,您可能需要设置一个环境变量

export SYSTEMD_LESS=FRXMK

允许长行换行(以便轻松复制/粘贴完全的日志消息),而不是需要右/左滚动来查看整个长日志消息。

相关内容