問(wèn)題表現(xiàn)
K8S集群中的問(wèn)題
需求在集群中掛載一個(gè)分布式文件存儲(chǔ)系統(tǒng),由于集群本身是rancher,理所當(dāng)然選擇了longhorn。
服務(wù)器系統(tǒng)為Centos7.6,在安裝部署longhorn的時(shí)候發(fā)現(xiàn)這玩意能裝上而且各項(xiàng)檢查都正常,但是在PVC調(diào)度的時(shí)候會(huì)發(fā)現(xiàn)無(wú)法調(diào)度到具體的磁盤負(fù)載機(jī)器上去。
閱讀官方資料之后發(fā)現(xiàn)在RHEL的機(jī)器上Rancher2.6.x的版本他們建議關(guān)閉防火墻,2.7.x的版本建議將防護(hù)墻升級(jí)到v7.x,否則會(huì)出現(xiàn)一些奇怪的問(wèn)題。但是你安裝官方文檔中的腳本去執(zhí)行只能將firewalld升級(jí)到0.6.3版本。然后在Github的issues中我找到了思路圍觀地址
DockerSwarm中的問(wèn)題
DockerSwarm中的問(wèn)題更加離譜,具體表現(xiàn)為三臺(tái)機(jī)器的swarm集群,程序部署在第三臺(tái)上面,你用第二臺(tái)機(jī)器的IP去訪問(wèn),本來(lái)是可以的,在 firewalld reload 之后你會(huì)發(fā)現(xiàn)只能用第三臺(tái)機(jī)器的IP去訪問(wèn)了,而且集群內(nèi)部的網(wǎng)絡(luò)也出現(xiàn)了問(wèn)題,整個(gè)overlay 的網(wǎng)絡(luò)基本癱瘓了。復(fù)查iptables中的規(guī)則后發(fā)現(xiàn)所有的轉(zhuǎn)發(fā)規(guī)則都丟了。只能重啟Docker去解決這個(gè)問(wèn)題。
解決思路
知道原理之后就簡(jiǎn)單了,直接簡(jiǎn)單粗暴,使用ufw替換firewalld,替換之后DockerSwarm與Rancher集群全部正常,iptables轉(zhuǎn)發(fā)正常。
編寫解決腳本
#! /bin/bash
uninstall_firewalld() {
systemctl stop firewalld
systemctl disable firewalld
}
install_ufw() {
yum install epel-release -y
yum install ufw -y
}
start_ufw() {
systemctl start ufw
systemctl enable ufw
ufw allow 22/tcp
ufw default deny
ufw reload
ufw status
}
#主函數(shù)
main() {
uninstall_firewalld
install_ufw
start_ufw
}
main
使用說(shuō)明
ufw allow 8888/tcp # 開(kāi)啟tcp端口
ufw allow 8888/udp # 開(kāi)啟tcp端口
ufw allow 9998:9999/tcp # 開(kāi)啟一批端口
ufw allow 9998:9999/udp # 開(kāi)啟一批端口
ufw deny 8888/tcp # 關(guān)閉端口
ufw deny 8888/udp # 關(guān)閉端口
ufw deny 9998:9999/tcp # 關(guān)閉一批端口
ufw deny 9998:9999/udp # 關(guān)閉一批端口
sudo ufw allow from 15.15.15.0/24 to any port 22
sudo ufw allow from 15.15.15.1 to any port 22
sudo ufw deny from 15.15.15.0/24 to any port 22
sudo ufw deny from 15.15.15.1 to any port 22
ufw reload # 重啟ufw
替換完之后全部正常,主要原因就是低版本的firewalld可能不太支持這么新的東西,畢竟好多年的玩意了,不支持也正常。