如何解决kubeadm init初始化时dial tcp 127.0.0.1:10248: connect: connection refused

2023年 7月 20日 65.3k 0

Kubernetes常简称为K8s是用于自动部署、伸缩和管理容器化containerized应用程序的开源系统。该系统由Google设计并捐赠给Cloud Native Computing Foundation(Linux基金会)。它旨在提供跨主机集群的自动部署、扩展以及运行应用程序容器的平台。它支持一系列容器工具,包括Docker等。

在本文中我们将会说明如何解决kubeadm init初始化时dial tcp 127.0.0.1:10248: connect: connection refused的错误。

dial tcp 127.0.0.1:10248: connect: connection refused

如果你正在尝试运行Kubernetes并尝试使用sudo kubeadm init初始化Kubernetes集群,那么你很大概率会得下面的错误:

[kubelet-check] It seems like the kubelet isn't running or healthy.
[kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get http://localhost:10248/healthz: dial tcp 127.0.0.1:10248: connect: connection refused.

翻译过来就是使用tcp协议连接到127.0.0.1:10248的连接被拒绝。这是cgroup驱动问题。默认情况下Kubernetes cgroup驱动程序设置为system,但docker设置为systemd。我们需要更改Docker cgroup驱动。

使用你喜欢的编辑器, 但在本教程中这里使用vim创建配置文件/etc/docker/daemon.json并添加以下行:

sudo vim /etc/docker/daemon.json
{
	"exec-opts": ["native.cgroupdriver=systemd"]
}
/etc/docker/daemon.json

如果你不懂使用VIM/VI,点击这里查看更多Vim教程,你也可以使用以下命令创建配置文件,注意下面的命令将会重写你配置文件:

echo '{"exec-opts": ["native.cgroupdriver=systemd"]}' | sudo tee /etc/docker/daemon.json
注意:命令将会重写/etc/docker/daemon.json

为使配置生效,你必须重启docker和kubelet。你将运行以下命令重启docker和kubelet:

systemctl daemon-reload
systemctl restart docker
systemctl restart kubelet

现在,我们再次尝试重新初始化一个Kubernetes集群,通过运行以下命令。

sudo kubeadm reset
sudo kubeadm init

结论

现在你已经知道了这个错误产生的原因,以及如何解决dial tcp 127.0.0.1:10248: connect: connection refused的错误,如你有任何问题,请随时发表你的评论。

相关文章

LeaferJS 1.0 重磅发布:强悍的前端 Canvas 渲染引擎
10分钟搞定支持通配符的永久有效免费HTTPS证书
300 多个 Microsoft Excel 快捷方式
一步步配置基于kubeadmin的kubevip高可用
istio全链路传递cookie和header灰度
REST Web 服务版本控制

发布评论