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

The connection to the server 10.0.x.x:6443 was refused after restarting the VM where kubernetes master was installed using 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

为什么?我该如何修复它,以便它无需输入即可启动?

The problem is that if I stop the machine and restart it the master node seems to be down

  • 由于是 kubeadm 安装在重启前正常工作,重启后似乎 Env var 丢失了。在 kubectl get nodes:

    之前尝试 运行
    export KUBECONFIG=/etc/kubernetes/admin.conf
    

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

已编辑:

Why? How can I fix it so that it starts without having to input that?

  • 啊,交换文件逗你了。默认情况下,如果启用交换,kubelet 将不会启动。您有两个选择:

    • 删除交换:这很简单,只需像您已经列出的那样禁用它,但通过在 /etc/fstab 文件中注释交换行使其永久化。在 creating swap mount point 之前添加 # ,下次重新启动时将不会有它。
    • Allow kubelet to 运行 with swap enabled:我知道,文档不推荐,但如果你喜欢危险的生活,你可以add/edit 在 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf 以下行:

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

      下次重新启动后,您将能够 运行 kubelet 启用交换。

我通过清除 HDD 上的一些 space 解决了我的问题。 space 似乎很低。然后,我重新启动了服务器,它解决了我的问题。

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

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

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

我把Master的$KUBECONFIG文件复制到slave节点的.kube/位置成功了(我只有2个节点,一主一从)

你只需要杀死kubelet服务并重新启动。 pods 并且容器将 运行 以及重启之前。

pkill kubelet

systemctl restart kubelet

祝你好运