我已经安装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
允许长行换行(以便轻松复制/粘贴完全的日志消息),而不是需要右/左滚动来查看整个长日志消息。