Docker v23.0 启动报错 Job for docker. service failed because the control process exited with error code

在尝试安装Kubernetesv1.27时,遇到Dockerv23启动失败的问题。错误源于Docker配置文件由daemon.json变为daemon.conf。解决方案包括回滚到Dockerv20低版本或修改v23的配置文件名。推荐回滚版本,因为Dockerv23可能导致Kubernetes初始化错误,可能与cri-dockerd不兼容。
摘要由CSDN通过智能技术生成

背景介绍

最近最新版的 Kubernetes v1.27 发布了,打算重新装一套集群,结果在安装 Docker 的时候启动不起来了,报下面的错误:

Job for docker. service failed because the control process exited with error code

错误分析

网上的解决方案大同小异,都是修改 docker.service 文件或者是在 daemon.json 中增加代码的都试过了,都没有用。

现有的方法都试过了都没有用,那是不是版本的问题?

Docker 官网才发现 Docker 在最近的一段时间发布了 23.0 版本,直接从 v20v23 ,中间直接跳过两个大版本,具体原因也没说。

解决方案:

知道了原因就可以解决问题了,这里提供两种解决方案:回滚到 v20 低版本、修改 v23 配置文件。

回滚到 v20 低版本

先把系统上的最新的版本 Docker v23 卸载干净,然后重新安装 Docker v20

修改 v23 配置文件

如果不想降级,另一种解决方案就是修改配置文件。

Docker 配置文件 daemon.json/etc/docker/ 目录下,daemon.json 文件一般是自动生成或者是手动创建,但是在新版本 Docker v23 中,这个文件名改成 daemon.conf 了,具体是因为什么原因改动官方也没说。

解决方法也很简单,直接将 daemon.json 修改为 daemon.conf 即可,文件中配置内容完全一样。

修改文件名:

mv daemon.json daemon.conf

重启服务:

systemctl restart docker

推荐使用

推荐使用第一种方案,即回滚到 v20 低版本。

因为 Docker v23 会导致 kubernetes initerror execution phase couldn‘t initialize a Kubernetes cluster 的错误:

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'

Additionally, a control plane component may have crashed or exited when started by the container runtime.
To troubleshoot, list all containers using your preferred container runtimes CLI.

Here is one example how you may list all Kubernetes containers running in docker:
	- 'docker ps -a | grep kube | grep -v pause'
	Once you have found the failing container, you can inspect its logs with:
	- 'docker logs CONTAINERID'

error execution phase wait-control-plane: couldn't initialize a Kubernetes cluster	

原因没找到,据我猜测大概原因是因为 Docker 版本太新了,配置文件的后缀名改动影响了 Kubernetes

因为 Kubernetes1.24 之后就移除了 dockershim,所以安装最新版本的 Kubernetes 还想用 Docker 的话就需要安装 cri-dockerd,大概率是因为 cri-dockerd 读取的配置还是低版本的 daemon.json,而最新版本 Docker v23 的配置文件 daemon.conf 目前 cri-dockerd 还不支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值