Menu Close

kubelet启动失败 [ERROR CRI]: container runtime is not running

注:(Kubernetes version: v1.28.0的版本只有初始化集群后才能启动systemctl start kubelet)
kubeadm初始化时出现报错,提示kubelet未启动成功

查看日志一直在提示重启服务
[root@k8s-master-125 ~]# journalctl -f -u kubelet.service

kubeadm初始化出现如下报错
[root@k8s-master-125 ~]# kubeadm init出现如下报错

kubeadm init出现报错是因为由于国内网络原因,kubeadm init会卡住不动,一卡就是半个小时,然后报出这种问题:

原因显而易见,是因为要下载k8s.gcr.io的docker镜像,但是国内连不上https://k8s.gcr.io/v2/
解决方法
使用阿里云镜像
运行kubeadm init时加上阿里云镜像的参数–image-repository=registry.aliyuncs.com/google_containers,如下:(版本改为自己需要的)
[root@k8s-node1-248 ~]# kubeadm init –image-repository=registry.aliyuncs.com/google_containers

之后会生成:

[root@k8s-node1-248 ~]# cd /var/lib/kubelet/

再启动 就会正常

注意:如果在 ~]#kubeadm init –image-repository=registry.aliyuncs.com/google_containers

报如下错误:

可能是containerd配置问题。直接将/etc/containerd/config.toml重新配置,(如果kubeadm在初始化失败后,kubelet无法启动成功,可尝试containerd config default再重启systemctl restart containerd

containerd config default

systemctl restart containerd

如果还无法解决,就直接剪辑备份配置文件后再重启

[root@k8s-node1-248 ~]# mv /etc/containerd/config.toml /etc/containerd/config.toml.bgk

[root@k8s-node1-248 ~]# systemctl restart containerd

[root@k8s-node1-248 ~]# systemctl status containerd

再次运行 ~]#kubeadm init –image-repository=registry.aliyuncs.com/google_containers 即可成功。

初始化及将node加入时报:[ERROR CRI]: container runtime is not running 也可尝试次方法。

kubelet初始化报错

注意:kubernets 自v 1.24.0 后,就不再使用 docker.shim,替换采用 containerd 作为容器运行时端点。因此需要安装 containerd(在 docker 的基础下安装)
安装完成后,查看containerd服务是否激活(一般安装docker时会自动安装如未安装需在docker 的基础下安装)
~]# systemctl status containerd
~]# ctr version

配置containerd

刚装好的containerd的配置文件几乎是空的,因为Docker官方维护的包其实不希望大家直接用containerd

用默认配置覆盖原来的配置

containerd config default | tee /etc/containerd/config.toml

重新启动 containerd,看起来正常

systemctl restart containerd