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的错误,如你有任何问题,请随时发表你的评论。

vim - myfreax
linux的vim命令基础
对于经常使用命令行的用户来说,Vim是首选的文本编辑器。与其他编辑器不同,Vim有几种操作模式,对新用户来说可能有点吓人,所以给它一个“神的编辑器”代名词也不奇怪了,Vim或其前身Vi都已预装在macOS和几乎所有Linux发行版上。如果遇到您最喜欢的编辑器不可用的情况,了解Vim的基础知识将会对您有所帮助
Docker - myfreax
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。