Kubelet 启动失败尝试污染日志

问题描述

我在 AWS 上安装了一堆新的 CentOS 服务器。服务 kubelet 污染日志文件(var/log/messages),它试图启动,但由于我没有用它,我想删除它。这是 CentOS 的可选组件,我可以安全地删除它(或禁用 kubelet.service)?我相信是这样,但没想到一个全新的服务器会出现这么多错误

目前,我的 /var/log/messages 日志中有 97% 包含以下行:

Jan 17 03:21:03 systemd: Started kubelet: The Kubernetes Node Agent.  
Jan 17 03:21:03 kubelet: F0117 03:21:03.101812   29626 server.go:198] Failed to load Kubelet  
 config file /var/lib/kubelet/config.yaml,error Failed to read kubelet config file 
"/var/lib/kubelet/config.yaml",error: open /var/lib/kubelet/config.yaml: no such file or 
directory
***da da da,40 more rows***
Jan 17 03:21:03 systemd: Unit kubelet.service entered Failed state.  
Jan 17 03:21:03 systemd: kubelet.service Failed.  
Jan 17 03:21:13 systemd: kubelet.service holdoff time over,scheduling restart.  
Jan 17 03:21:13 systemd: Stopped kubelet: The Kubernetes Node Agent.  
Jan 17 03:21:13 systemd: Started kubelet: The Kubernetes Node Agent.  
***sleep for 10s and start all over*

解决方法

正如我在评论中已经提到的,kubeletkubernetes 集群 的一部分,它是在每个节点上运行的主要节点代理。我真诚地怀疑这个 CentOS 映像是否预装了它。如果确实如此,并且如您所说,这是一个“全新的 CentOS 服务器”,以前没有人修改过,如果您的服务器与 kubernetes 集群无关,我建议您选择不同的映像>.但是,如果它被用作您的生产环境并运行其他一些重要的东西,您应该调查它是如何安装的并简单地将其删除。

我没有自己做设置,但使用的模板是 258751437250/ami-centos-7-1.13.0-00-1543960911。我们没有要求 Kubernetes 就在上面,没有使用集群

对您的问题最简单的回答是:

您可以安全地停止和禁用它,这样它就不会再污染您的 /var/log/messages

sudo systemctl stop kubelet.service && sudo systemctl disable kubelet.service

您也可以删除它。根据安装方式,您可能需要以特定方式进行安装。

首先检查:

yum list installed | grep kubelet

如果它在那里,你可以:

yum remove kubelet

如果它没有返回任何结果,您可以尝试:

rpm -qa | grep kubelet

如果发现任何内容,请将其删除:

rpm -e kubelet

它也可能是使用 minikubekubeadm 之类的工具设置的旧 kubernetes 安装的残余。要检查,请运行:

sudo systemctl cat kubelet.service

并查看 ExecStart 部分。根据您在那里找到的内容,您很可能需要卸载一些其他不必要的组件,例如如果您发现类似 /var/lib/minikube/binaries/v1.16.0/kubelet 的内容,则表示它是 minikube 安装的一部分。

有可能它甚至被部分卸载了,但仍有一些剩余。如您所见,即使它的配置文件也找不到:

error: open /var/lib/kubelet/config.yaml: no such file or 
directory

如有任何疑问或其他问题,请随时提出。