在 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-ce
和 apt-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
我 运行 Ubuntu 16.0.4.
我正在使用 kubeadm
.
我目前正在使用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-ce
和 apt-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