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
如果你不懂使用VIM/VI,点击这里查看更多Vim教程,你也可以使用以下命令创建配置文件,注意下面的命令将会重写你配置文件:
为使配置生效,你必须重启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的错误,如你有任何问题,请随时发表你的评论。