我遵循此https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/在我的云上安装kubernetes。
运行命令kubectl get nodes
时出现此错误:
The connection to the server localhost:6443 was refused - did you specify the right host or port?
我该如何解决?
答案 0 :(得分:1)
如果仅关注提到的文档,则意味着您仅安装了kubeadm
,kubectl
和kubelet
。
如果您要正确运行kubeadm
,则需要再执行3个步骤。
1。安装docker
安装Docker ubuntu version。如果您使用的是其他系统,请从左侧菜单中选择它。
原因:
如果您不安装docker,则会收到如下错误消息:
preflight] WARNING: Couldn't create the interface used for talking to the container runtime: docker is required for container runtime: exec: "docker": e
xecutable file not found in $PATH
error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables does not exist
[ERROR FileContent--proc-sys-net-ipv4-ip_forward]: /proc/sys/net/ipv4/ip_forward contents are not set to 1
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher
2。 kubeadm
您已经正确安装了kubeadm
和docker
,但是现在您需要初始化kubeadm
。可以找到文档here
简而言之,您必须运行命令
$ sudo kubeadm init
初始化后,您将收到运行以下命令的信息:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
和令牌以将另一个VM加入群集。看起来像
kubeadm join 10.166.XX.XXX:6443 --token XXXX.XXXXXXXXXXXX \
--discovery-token-ca-cert-hash sha256:aXXXXXXXXXXXXXXXXXXXXXXXX166b0b446986dd05c1334626aa82355e7
如果要在初始化阶段执行某些特殊操作,请检查this docs。
3。将节点状态更改为Ready
上一步之后,您将可以执行
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
ubuntu-kubeadm NotReady master 4m29s v1.16.2
但是您的节点将处于NotReady
状态。如果您将其描述为$ kubectl describe node
,则会看到错误:
Ready False Wed, 30 Oct 2019 09:55:09 +0000 Wed, 30 Oct 2019 09:50:03 +0000 KubeletNotReady runtime network not ready: Ne
tworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
这意味着您必须安装一个CNI。可以在here中找到它们的列表。
编辑
我想到的还有一件事。
有时在关闭和打开VM时需要重新启动 kubelet和docker服务。您可以使用
$ service docker restart
$ systemctl restart kubelet
希望有帮助。
答案 1 :(得分:0)
好像缺少kubeconfig文件。您将admin.conf文件复制到〜/ .kube / config吗?
答案 2 :(得分:0)
我做了以下两个步骤。 kubectl现在可以工作了。
$ service docker restart
$ systemctl restart kubelet
答案 3 :(得分:0)
验证是否设置了诸如“ http_proxy”或“ https_proxy”之类的代理,大多数情况下,我们将其设置为环境变量。如果是,请删除代理,它应该对您有用。