【问题标题】:Cluster install with `kubeadm` on Ubuntu. Failing on `kubeadm init` with `getsockopt: connection refused`在 Ubuntu 上使用 `kubeadm` 进行集群安装。使用“getsockopt:连接被拒绝”在“kubeadm init”上失败
【发布时间】:2018-06-30 11:53:39
【问题描述】:

我正在运行 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.

我已关闭交换,并在删除以前使用apt-get remove docker-ce && apt-get autoremove --purge docker-ce 安装的docker-ce 之后使用apt-get install docker.io 安装了docker。

我知道有些人甚至在安装 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 &amp;&amp; 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).

谢谢!

`

【问题讨论】:

  • 您需要深入研究各个部分。使用 journalctl -u kubelet -f 检查 kubelet 的最后日志。列出 docker ps 所有正在运行的容器,并查看 apiserver、控制器管理器和调度程序的日志以获取详细的错误日志。

标签: kubernetes kubeadm


【解决方案1】:

查看错误,我认为您绝对应该看到@David 建议的日志。现在您的设置无法访问在 127.0.0.1:10255 上运行的 kubelet。这里的端口 10255 表明了这一点。

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

【讨论】:

  • 我怎么知道要为 cidr 提供什么?
  • 您可以从此链接中给出的列表中选择任何网络插件。(kubernetes.io/docs/setup/independent/create-cluster-kubeadm/…)。选择插件,然后您会找到必须在 --pod-network-cidr 中传递的参数= .
  • 谢谢我选择了法兰绒并使用了合适的 CIDR
【解决方案2】:

需要我的系统

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

【讨论】:

    【解决方案3】:

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

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

    重启

    
        sudo systemctl restart docker
        sudo systemctl restart kubelet
    
    

    【讨论】:

      猜你喜欢
      • 2019-01-06
      • 2018-09-17
      • 2019-07-10
      • 2020-03-16
      • 2018-09-08
      • 2020-08-15
      • 2019-02-07
      • 2019-05-23
      • 2021-08-08
      相关资源
      最近更新 更多