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.

这是cgroup驱动问题。默认情况下Kubernetes cgroup驱动程序设置为system,但docker设置为systemd。我们需要更改Docker cgroup驱动,通过创建配置文件/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。

systemctl daemon-reload
systemctl restart docker
systemctl restart kubelet

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

sudo kubeadm reset
sudo kubeadm init

发表评论

邮箱地址不会被公开。 必填项已用*标注