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

cod*_*ent 6 virtualbox kubernetes 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?
Run Code Online (Sandbox Code Playgroud)

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

更新:

重新启动 VM 后,我必须执行以下操作才能启动主节点:

sudo swapoff -a
sudo systemctl restart kubelet.service
Run Code Online (Sandbox Code Playgroud)

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

Con*_*nst 5

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

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

    export KUBECONFIG=/etc/kubernetes/admin.conf
    
    Run Code Online (Sandbox Code Playgroud)

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

编辑:

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

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

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

      Environment="KUBELET_EXTRA_ARGS=--fail-swap-on=false"
      
      Run Code Online (Sandbox Code Playgroud)

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