kubelet.service failed

kubelet.service failed

问题描述:运行systemctl start kubelet报错kubelet.service failed.

查看kubelet状态

systemctl status kubelet
[root@k8s-master ~]# systemctl status kubelet
● kubelet.service - kubelet: The Kubernetes Node Agent
   Loaded: loaded (/etc/systemd/system/kubelet.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/kubelet.service.d
           └─10-kubeadm.conf
   Active: activating (auto-restart) (Result: exit-code) since 二 2024-04-30 14:54:35 CST; 3s ago
     Docs: http://kubernetes.io/docs/
  Process: 21982 ExecStart=/usr/local/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS (code=exited, status=255)
 Main PID: 21982 (code=exited, status=255)

430 14:54:35 k8s-master kubelet[21982]: /usr/local/go/src/io/io.go:395 +0x2ff
430 14:54:35 k8s-master kubelet[21982]: io.Copy(...)
430 14:54:35 k8s-master kubelet[21982]: /usr/local/go/src/io/io.go:368
430 14:54:35 k8s-master kubelet[21982]: os/exec.(*Cmd).writerDescriptor.func1(0xc0001e71a0, 0xc00060dfb0)
430 14:54:35 k8s-master kubelet[21982]: /usr/local/go/src/os/exec/exec.go:311 +0x65
430 14:54:35 k8s-master kubelet[21982]: os/exec.(*Cmd).Start.func1(0xc0004c4f20, 0xc000c5fd20)
430 14:54:35 k8s-master kubelet[21982]: /usr/local/go/src/os/exec/exec.go:441 +0x27
430 14:54:35 k8s-master kubelet[21982]: created by os/exec.(*Cmd).Start
430 14:54:35 k8s-master kubelet[21982]: /usr/local/go/src/os/exec/exec.go:440 +0x629
430 14:54:35 k8s-master systemd[1]: kubelet.service failed.

查看日志分析原因

journalctl -u kubelet
430 15:05:21 k8s-master kubelet[28786]: F0430 15:05:21.285547   28786 server.go:269] failed to run Kubelet: misconfiguration: kubelet cgroup driver: "systemd" is different from docker cgroup driver: "cgroupfs"

从日志信息中,我们可以看到kubelet启动失败的原因是cgroup驱动的配置不一致。

这意味着kubelet和Docker使用的cgroup驱动不一致,kubelet使用的是systemd,而Docker使用的是cgroupfs。这会导致kubelet无法正确地监控和限制Docker容器的资源使用。

要解决这个问题,你需要确保kubelet和Docker使用相同的cgroup驱动。你可以选择更改kubelet或者Docker的配置以使它们一致。

如果你希望改变Docker的cgroup驱动为systemd,你可以编辑Docker的配置文件(通常是/etc/docker/daemon.json),添加或修改以下内容:

{
  "exec-opts": ["native.cgroupdriver=systemd"]
}

注意:有的人可能已经修改了daemon.json文件,此时应注意符合json格式,例如以下格式:

{
  "registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}

然后重启Docker服务:

sudo systemctl restart docker

如果你希望改变kubelet的cgroup驱动为cgroupfs,你可以编辑kubelet的配置文件(通常是/etc/systemd/system/kubelet.service.d/10-kubeadm.conf),修改或添加以下行:

Environment="KUBELET_EXTRA_ARGS=--cgroup-driver=cgroupfs"

然后重启kubelet服务:

sudo systemctl daemon-reload
sudo systemctl restart kubelet
  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值