我在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
为什么呢?如何修复它以便在不必输入的情况下启动它?
答案 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
祝你好运