重新启动使用kubeadm安装kubernetes master的VM后,与服务器10.0.x.x:6443的连接被拒绝

时间:2018-05-17 08:33:41

标签: kubernetes virtualbox kubectl kubeadm

我在VM(VirtualBox)上成功使用kubeadm安装了Kubernetes master。问题是,如果我停止机器并重新启动它,主节点似乎已关闭:

kubectl get nodes
The connection to the server 10.0.x.x:6443 was refused - did you specify the right host or port?

如何在重新启动VM后确保它始终处于启动状态?

更新

重新启动VM后,我需要做的就是让主节点启动:

sudo swapoff -a
sudo systemctl restart kubelet.service

为什么呢?如何修复它以便在不必输入的情况下启动它?

4 个答案:

答案 0 :(得分:1)

  

问题是,如果我停止机器并重新启动它,主节点似乎已关闭

  • 由于kubeadm安装在重新启动之前正常工作,因此重启后似乎缺少Env var。尝试在kubectl get nodes

    之前运行此操作
    export KUBECONFIG=/etc/kubernetes/admin.conf
    

    如果它正常启动,那么您需要确保在重新启动时正确配置KUBECONFIG环境变量,或者将其添加到.bashrc或类似...

编辑:

  

为什么呢?如何修复它以便在不必输入的情况下启动它?

  • 啊,交换文件正在取笑你。默认情况下,如果启用了交换,则无法启动kubelet。您有两种选择:

    • 删除交换:这很简单,只需按照您已经列出的方式将其停用,但可以通过在/etc/fstab文件中注释交换行来使其永久化。在创建交换挂载点的行之前添加#,下次重新启动时,您将无法获得它。
    • 允许kubelet在启用交换的情况下运行:我知道,不是文档推荐的,但如果您想生活危险,可以在/etc/systemd/system/kubelet.service.d/10-kubeadm.conf后续行添加/编辑:

      Environment="KUBELET_EXTRA_ARGS=--fail-swap-on=false"
      

      然后重新启动,您将能够在启用交换的情况下运行kubelet。

答案 1 :(得分:0)

我通过清除HDD上的空间来解决问题。似乎空间很小。然后,我重新启动服务器,它解决了我的问题。

答案 2 :(得分:0)

我遇到了类似的问题,其中kubectl命令在我的主节点中运行,但是在从属节点中执行的命令却给我这个错误:

与服务器10.0.x.x:6443的连接被拒绝-您指定了正确的主机或端口吗?

对我有用的解决方案如下:

我复制了Master的$KUBECONFIG文件,并将其放置在slave节点的.kube/位置,并且可以正常工作(我只有2个节点,一个master和一个slave。)

答案 3 :(得分:0)

您只需要杀死 kubelet 服务并重新启动即可。 Pod 和容器将与重启前一样运行。

pkill kubelet

systemctl restart kubelet

祝你好运