由于断电,发现搭好的k8s环境出现以下错误:
The connection to the server xxxx:6443 was refused - did you specify the right host or port?
猜测是不是apiserver没有起来,由于我使用kubeadm部署的集群,apiserver也是作为一个pod起在环境里的,没法查看。进一步运行systemctl status kubelet
,发现kubelet没有起来。
手动起了下,systemctl deamon-reload && systemctl restart kubelet
,发现然后报错,服务起不来。
执行journalctl -xefu kubelet
,发现了蛛丝马迹:
failed to run Kubelet: Running with swap on is not supported, please disable swap! or set --fail-swap-on flag to false
。看信息是由于没有关闭swap,那么为啥要关闭它呢?是为了提升性能检测,k8s会去获取cpu和memory的信息,如果存在swap的话,那么获取的值就不是那么准确。加上我们用kubeadm部署的,要求关闭它。那么话不多说,关!
swapoff -a
# 修改/etc/fstab永久关闭Swap
cp -p /etc/fstab /etc/fstab.bak$(date '+%Y%m%d%H%M%S')
sed -i "s/\/dev\/mapper\/centos-swap/\#\/dev\/mapper\/centos-swap/g" /etc/fstab
# 修改后重新挂载全部挂载点
mount -a
# 查看Swap
free -m
cat /proc/swaps
执行成功后,再次启动kubelet服务,systemctl deamon-reload && systemctl restart kubelet
,发现master节点正常了,然后同样的把node节点也执行一遍,最后集群又回到了我们的手里了。cheers!
网友评论