weixin_45939901 2024-11-28 19:53 采纳率: 0%
浏览 229
已结题

kubelet.service: Failed with result 'exit-code'.

安装Kubernetes 1.28报错:The kubelet is not running 报错如下


Unfortunately, an error has occurred:
    timed out waiting for the condition

This error is likely caused by:
    - The kubelet is not running
    - The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)

If you are on a systemd-powered system, you can try to troubleshoot the error with the following commands:
    - 'systemctl status kubelet'
    - 'journalctl -xeu kubelet'

报错日志如下

1128 14:12:22 godlnode kubelet[3307]: E1128 14:12:22.488533    3307 pod_workers.go:1300] "Error syncing pod, skipping" err="failed to \"CreatePodSandbox\" for \"kube-controller-manager-godlnode_kube-system(43951358d04c1af6299c0c9422c22850)\" with CreatePodSandboxError: \"Failed to create sandbox for pod \\\"kube-controller-manager-godlnode_kube-system(43951358d04c1af629

以参考方案无法实现
https://www.jianshu.com/p/4b20e7ea4883

辛苦解答

当前的kubelet服务是正常的

systemctl status kubelet 
● kubelet.service - kubelet: The Kubernetes Node Agent
     Loaded: loaded (/lib/systemd/system/kubelet.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/kubelet.service.d
             └─10-kubeadm.conf
     Active: active (running) since Thu 2024-11-28 19:47:56 CST; 17min ago
       Docs: https://kubernetes.io/docs/
   Main PID: 952 (kubelet)
      Tasks: 11 (limit: 2218)
     Memory: 101.6M
        CPU: 8.586s

kubelet的报错如下

img

  • 写回答

37条回答 默认 最新

  • M_try的小尾巴 2024-11-28 20:09
    关注
    获得0.25元问题酬金

    提示: 本回答参考 AIGC,由本人审核整理提供。若问题解决,望采纳;如仍有疑问,请评论回复。

    问题分析

    根据你提供的信息,Kubernetes 1.28 安装过程中 kubelet 服务未能正常启动,导致整个集群无法正常运行。具体错误信息包括:

    1. kubelet 未运行:这是导致问题的主要原因。
    2. kubelet 健康状态异常:可能是由于节点配置错误,特别是所需的 cgroups 未启用。
    3. Pod 创建失败:具体表现为 CreatePodSandbox 失败,这通常与 kubelet 的运行状态有关。

    解决方案

    1. 检查 kubelet 服务状态

    首先,使用以下命令检查 kubelet 服务的状态:

    systemctl status kubelet
    

    如果 kubelet 服务未启动,尝试启动它:

    systemctl start kubelet
    

    如果启动失败,查看详细的日志信息:

    journalctl -xeu kubelet
    

    2. 检查 cgroups 配置

    kubelet 需要 cgroups 来管理容器的资源。确保你的系统启用了所需的 cgroups。你可以通过以下步骤检查和配置 cgroups:

    1. 检查 cgroups 是否启用

      cat /proc/cgroups
      

      确保 memorycpu 等关键 cgroups 是启用的。

    2. 配置 kubelet 使用 cgroups

      编辑 kubelet 的配置文件(通常位于 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf),确保以下参数正确配置:

      [Service]
      ExecStart=
      ExecStart=/usr/bin/kubelet --cgroup-driver=systemd --runtime-cgroups=/systemd/system.slice --kubelet-cgroups=/systemd/system.slice
      

      然后重新加载 systemd 配置并重启 kubelet:

      systemctl daemon-reload
      systemctl restart kubelet
      

    3. 检查 Pod 创建失败的具体原因

    根据你提供的日志信息,CreatePodSandbox 失败,这通常与 CNI(容器网络接口)配置有关。检查你的 CNI 配置是否正确:

    1. 检查 CNI 插件

      确保你的 CNI 插件(如 Flannel、Calico 等)已正确安装并配置。

    2. 检查网络配置

      确保网络配置文件(如 /etc/cni/net.d/ 目录下的文件)正确无误。

    3. 检查 kubelet 的 CNI 配置

      确保 kubelet 的 --network-plugin 参数正确指向你的 CNI 插件。

    4. 参考其他解决方案

    你提到参考了 简书上的解决方案,但未能解决问题。建议你详细检查该解决方案中的每一步,确保没有遗漏任何配置。

    总结

    1. 检查 kubelet 服务状态:确保 kubelet 服务已启动并运行正常。
    2. 检查 cgroups 配置:确保系统启用了所需的 cgroups,并正确配置 kubelet 使用 cgroups。
    3. 检查 Pod 创建失败的原因:特别是 CNI 配置,确保网络插件和配置文件正确无误。

    通过以上步骤,你应该能够解决 kubelet 未运行的问题,并使 Kubernetes 集群恢复正常。

    评论

报告相同问题?

问题事件

  • 系统已结题 12月6日
  • 修改了问题 11月28日
  • 创建了问题 11月28日