在架设很多上层应用系统时会遇到很多需要关闭swap的操作,例如安装Kubernetes节点。通常的做法是在/etc/fstab文件中注销swap分区的挂载,但是没有起作用,运行

free -h

还是能看见挂载的swap,而通过命令

sudo swapoff -a && sudo systemctl restart kubelet.service

是能够关闭并成功启动kubernetes所有相关服务。由此想到开机关闭:

  • /etc/rc.local中写入关闭swap
swapoff -a # 添加命令

本人在本机上安装k8s,虽然kubelet服务能够启动,但是网络没有成功启动,因此该方法不能解决问题。

  • 通过编辑kubelet服务,在服务启动前关闭swap
    • 查看kubelet相关服务依赖
systemd-analyze critical-chain
  • 编辑kubelet服务重载配置
sudo systemd edit kubelet.service

# 添加如下配置

[Unit]
After=network.target

[Service]
ExecStartPre=/usr/sbin/swapoff -a

重载服务并重启验证

sudo systemctl daemon-reload && sudo systemctl reboot

其中添加的配置会让系统生成一个重载文件,内容就是上面编辑时添加的内容,文件路径为:/etc/systemd/system/kubelet.service.d/override.conf。