跳至主要内容

使用 firewalld 開啟連接埠

危險

啟用 firewalld 可能會導致嚴重的網路通訊問題。

為了確保網路功能正常運作,必須在執行 RKE2 的系統上停用 firewalld。Firewalld 與 Canal 衝突,Canal 是 RKE2 的預設網路堆疊。

在執行 Kubernetes 1.19 及更高版本的系統上也必須停用 Firewalld。

如果您在執行 Kubernetes 1.18 或更早版本的系統上啟用 firewalld,請理解這可能會導致網路問題。Kubernetes 中的 CNI 會動態更新 iptables 和網路規則,獨立於任何外部防火牆(例如 firewalld)。當 CNI 與外部防火牆衝突時,這可能會導致意外行為。

某些 衍生自 RHEL 的 Linux 發行版(包括 Oracle Linux)可能具有阻止與 Helm 通訊的預設防火牆規則。

例如,AWS 中的一個 Oracle Linux 映像具有 REJECT 規則,阻止 Helm 與 Tiller 通訊:

Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

您可以使用以下指令檢查預設防火牆規則:

sudo iptables --list

本節說明如何使用 firewalld 在高可用性 Rancher 伺服器叢集中的節點上套用防火牆連接埠規則。

先決條件​

安裝 v7.x 或更高版本的 firewalld:

yum install firewalld
systemctl start firewalld
systemctl enable firewalld

套用防火牆連接埠規則​

在 Rancher 高可用性安裝說明中,Rancher 伺服器設定在三個節點上,這些節點具有全部三個 Kubernetes 角色:etcd、controlplane 和 worker。如果您的 Rancher 伺服器節點具有全部三個角色,請在每個節點上執行以下指令:

firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=2376/tcp
firewall-cmd --permanent --add-port=2379/tcp
firewall-cmd --permanent --add-port=2380/tcp
firewall-cmd --permanent --add-port=6443/tcp
firewall-cmd --permanent --add-port=8472/udp
firewall-cmd --permanent --add-port=9099/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10254/tcp
firewall-cmd --permanent --add-port=30000-32767/tcp
firewall-cmd --permanent --add-port=30000-32767/udp

如果您的 Rancher 伺服器節點具有不同的角色,請根據節點的角色使用以下指令:

# 對於 etcd 節點,請執行以下指令:
firewall-cmd --permanent --add-port=2376/tcp
firewall-cmd --permanent --add-port=2379/tcp
firewall-cmd --permanent --add-port=2380/tcp
firewall-cmd --permanent --add-port=8472/udp
firewall-cmd --permanent --add-port=9099/tcp
firewall-cmd --permanent --add-port=10250/tcp

# 對於控制平面節點,請執行以下指令:
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=2376/tcp
firewall-cmd --permanent --add-port=6443/tcp
firewall-cmd --permanent --add-port=8472/udp
firewall-cmd --permanent --add-port=9099/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10254/tcp
firewall-cmd --permanent --add-port=30000-32767/tcp
firewall-cmd --permanent --add-port=30000-32767/udp

# 對於工作節點,請執行以下指令:
firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=2376/tcp
firewall-cmd --permanent --add-port=8472/udp
firewall-cmd --permanent --add-port=9099/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10254/tcp
firewall-cmd --permanent --add-port=30000-32767/tcp
firewall-cmd --permanent --add-port=30000-32767/udp

在節點上執行 firewall-cmd 指令後,請使用以下指令啟用防火牆規則:

firewall-cmd --reload

結果: 防火牆已更新,以便 Helm 可以與 Rancher 伺服器節點通訊。