导语:同样的配置kubeadm-config.yaml配置分别在16.04和22.04上初始化1.22(使用docker)后,22.04 无法使用到swap。
排查发现22.04需要在 /lib/systemd/system/kubelet.service 中的KUBELET_EXTRA_ARGS添加--feature-gates=NodeSwap=true
KUBELET_EXTRA_ARGS=--fail-swap-on=false --feature-gates=NodeSwap=true --system-reserved=cpu=200m,memory=500Mi --kube-reserved=cpu=500m,memory=1Gi --eviction-hard=nodefs.available<1Gi,imagefs.available<1Gi
执行命令重启kubelet生效
systemctl daemon-reload && systemctl restart kubelet
重启之后发现swap又不能使用了,需要再次执行systemctl daemon reload
。
在22.04下修改kubeadm-config.yaml中些许无关swap的配置 安装1.28.2版本(使用containerd)后,添加--feature-gates=NodeSwap=true
后可以试用swap,重启后也可以使用swap
备注一下:如果使用了特权模式,容器内会没有/sys/fs/cgroup/memory.swap.xxx这些文件,但是压是可以把swap压上去的