如題,踩了一堆坑后,終於把項目部署到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
這樣,就不怕重啟后要做一系列的操作了