在 Ubuntu 上使用 `kubeadm` 进行集群安装。 `kubeadm init` 失败,`getsockopt: connection refused`

Cluster install with `kubeadm` on Ubuntu. Failing on `kubeadm init` with `getsockopt: connection refused`

我 运行 Ubuntu 16.0.4.

我正在使用 kubeadm.

启动 Kubernetes 集群

我目前正在使用kubeadm init初始化主节点。

我收到以下错误:

[kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10255/healthz' failed with error: Get http://localhos t:10255/healthz: dial tcp 127.0.0.1:10255: getsockopt: connection refused.

我关闭了 swap,在删除之前安装的 docker-ceapt-get remove docker-ce && apt-get autoremove --purge docker-ce 之后,我安装了 docker 和 apt-get install docker.io

我知道有些人在安装 docker-ce 并且从新环境开始时遇到了问题(请参阅 https://github.com/kubernetes/kubernetes/issues/55281)。我真的很想避免那样做。

我怎样才能摆脱这个错误?

谢谢。


更新。 运行 journalctl -u kubelet -f 产出:

error: failed to run Kubelet: failed to create kubelet: misconfiguration: kubelet cgroup driver: "cgroupfs" is different from docker cgroup driver: "systemd"

这让我相信我需要

cat << EOF > /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=cgroupfs"]
}
EOF

我用 systemctl restart docker

重新启动了 docker

然后用 kubeadm reset && kubeadm init

重试

有效并解决了我的问题。

我想指出,kubeadm 说明似乎告诉您当前要执行完全不同的操作。

他们告诉你做:

cat << EOF > /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF

这让我误入歧途。

之后没看到留言:

Or ensure the --cgroup-driver kubelet flag is set to the same value as Docker (e.g. cgroupfs).

谢谢!

`

查看错误,我认为您绝对应该按照@David 的建议查看日志。现在您的设置无法访问运行在 127.0.0.1:10255.Here 端口 10255 上的 kubelet。

所以我认为您的 kubelet 没有正确安装或配置。我建议您通过点击命令 "service kubelet restart" 来重启 kubelet,然后点击 运行 "kubeadm reset" 来清理损坏的设置,最后点击 "kubeadm init"。 我想在这里补充一点,虽然它与你的问题无关,但你应该在 kubeadm init 中添加“--pod-network-cidr=”。正如许多网络插件要求的那样。

我的系统需要

cat << EOF > /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=cgroupfs"]
}
EOF

我已经在所有节点上更新了以下配置并重新启动了 docker 和 kubelet -

    cat << EOF > /etc/docker/daemon.json
    {
      "exec-opts": ["native.cgroupdriver=cgroupfs"]
    }
    EOF

重启


    sudo systemctl restart docker
    sudo systemctl restart kubelet