【发布时间】: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 && 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