You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

kubeadm部署的Kubernetes Master节点重启VM后无法连接,如何实现自动启动?

问题根源拆解

你遇到的这个现象,核心是两个关键点导致的:

1. Swap内存自动挂载,阻断kubelet启动

Kubernetes的设计逻辑里,必须禁用swap内存——因为swap会打乱K8s对容器资源的精准调度,还可能引发性能波动和稳定性问题。kubelet启动时会强制校验swap状态,如果检测到swap是开启的,它会直接启动失败或者进入异常状态。

而你的VirtualBox虚拟机重启后,系统默认会重新挂载swap分区,这就导致kubelet在开机阶段无法正常启动。kubelet是管理Master节点所有控制平面组件(比如kube-apiserver、kube-controller-manager)的核心服务,它挂了之后,apiserver也就没法正常提供6443端口的服务,自然会出现「连接被拒绝」的错误。

2. Kubelet开机自启逻辑未匹配swap状态

虽然你手动重启kubelet能恢复,但如果kubelet没设置开机自启,或者开机时swap还没关闭就尝试启动,它还是会启动失败。不过这个是次要问题,核心矛盾还是swap的自动挂载。

永久解决配置步骤

要实现虚拟机重启后Master节点自动恢复正常,只需要完成以下配置:

第一步:永久禁用Swap内存

方法一:手动编辑配置文件

  • 打开系统挂载配置文件/etc/fstab:
    sudo nano /etc/fstab
    
  • 找到包含swap关键字的行,在行首添加#注释掉该配置,比如:
    # /dev/mapper/ubuntu--vg-swap_1 none            swap    sw              0       0
    
  • 保存退出后,立即关闭当前正在运行的swap:
    sudo swapoff -a
    

方法二:一键命令修改(更高效)

直接执行下面的命令,自动注释fstab中的swap配置并关闭当前swap:

sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab && sudo swapoff -a

第二步:确保kubelet服务开机自启

执行下面的命令,让kubelet在系统启动时自动启动:

sudo systemctl enable kubelet.service

现在,当你重启虚拟机时,swap不会被自动挂载,kubelet能正常启动,控制平面组件也会随之运行,再也不用手动执行swapoff和重启kubelet的操作了。

验证配置效果

完成配置后,你可以重启虚拟机测试:

sudo reboot

重启完成后直接执行kubectl get nodes,应该能正常看到Master节点处于Ready状态,无需任何手动干预。

内容的提问来源于stack exchange,提问作者codependent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:16:34