CentOS7 部署K8S集群成功后,重启就不能用了???k8s环境自启动
如题,踩了一堆坑后,终于把项目部署到k8s,但是每次重启,都要初始化???不科学啊,找了一堆资料,记录下踩坑过程:
一、准备工作
如果你的项目还没在k8s环境下部署成功,建议看看其他几篇文档:
1、安装虚拟机:https://www.cnblogs.com/CoderLinkf/p/12393993.html
2、集群部署:https://www.cnblogs.com/CoderLinkf/p/12395710.html
3、项目部署:https://www.cnblogs.com/CoderLinkf/p/12408589.html
二、问题说明
我们在部署项目的时候发现一个问题,部署完k8s,机子重启后,需要关闭防火墙,swap,重置k8s环境,重新安装,并且重新将node join进来。情况就是在使用kubectl get nodes时出现6443端口占用
查看状态,发现没有运行,于是,开始找解决方法
三、解决问题
1、关闭防火墙(不安全的做法),但是,每次重启,防火墙也开启,所以彻底关掉它
systemctl stop firewalld.service systemctl disable firewalld.service
2、关闭防火墙之后,既然是不安全的做法,我们来使用iptables配置规则:
yum install iptables -y
yum install iptables-services
安装成功
接下来,配置规则,编辑文件
vi /etc/sysconfig/iptables
这里说一下文件,一般简单配置开放端口,就是按端口顺序在
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
上下添加配置,连续的端口可以使用“:”号,比如,100:200表示一百到两百间的端口,100:表示一百以上的端口,:200表示两百以下端口,贴出配置,master节点:
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 2379:2380 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 6443 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 10250:10255 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 30000:32767 -j ACCEPT
node节点:
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 443 -j ACCEPT -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 10250:10255 -j ACCEPT -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 30000:32767 -j ACCEPT
然后执行,保存,启动
service iptables save systemctl start iptables.service systemctl enable iptables.service
3、设置swap关闭
需要关闭交换内存
swapoff -a
修改/etc/fstab文件
vi /etc/fstab
将文件中的/dev/mapper/centos-swap swap swap defaults 0 0这一行注释掉
vi /etc/sysctl.d/k8s.conf
添加一行
vm.swappiness=0
执行
sysctl -p /etc/sysctl.d/k8s.conf
4、让kubelet自启
最后,在master,node节点中,都要让kubelet自启
systemctl start kubelet
systemctl enable kubelet
这样,就不怕重启后要做一系列的操作了