Kubernetes要求禁用swap才能运行kubelet,需先执行swapoff -a临时关闭,再注释/etc/fstab中swap挂载行永久禁用,最后重启kubelet并验证状态为Ready。

当CentOS节点重启后kubelet服务报错退出,journalctl -u kubelet日志明确提示“running with swap on is not supported, please disable swap”,说明Kubernetes拒绝在启用swap的系统上运行,必须彻底关闭swap才能让kubelet正常启动。
确认当前swap状态
执行 free -m 查看内存使用详情,重点关注Swap行:若Total列数值大于0,说明swap仍在启用;若为0,则已临时关闭,但需进一步验证是否持久生效。
再运行 swapon --show,若输出为空,表示当前无激活的swap设备;若有输出(如/dev/mapper/centos-swap),则swap仍被挂载,必须立即处理。
临时关闭swap(立即生效)
运行 swapoff -a 强制卸载所有swap设备。
这一步仅作用于当前会话,重启后失效。如果跳过此步直接改fstab,后续验证时可能因swap仍挂载而误判配置未生效。
永久禁用swap(防止重启恢复)
编辑系统挂载配置文件:vi /etc/fstab
在文件中找到形如 /dev/mapper/centos-swap swap swap defaults 0 0 或 UUID=xxx none swap sw 0 0 的行。
【必须注释掉整行,不能只删参数或留空】 在该行最前面添加 # 号,例如改为 # /dev/mapper/centos-swap swap swap defaults 0 0。
保存退出后,重启前可再次执行 swapoff -a && swapon --show 验证——输出应为空,且 free -m 中Swap Total为0。
重启kubelet并验证
执行 systemctl daemon-reload 刷新unit配置。
运行 systemctl start kubelet 启动服务。
立即检查状态:systemctl status kubelet,Active字段应显示 active (running);再执行 kubectl get nodes,节点状态应为 Ready。


















