我有一個 RHEL8 系統作為 Docker Swarm 工作節點。它已firewalld
啟用,並且有一個分配了和介面docker
的區域。docker0
docker_gwbridge
$ cat /etc/firewalld/zones/docker.xml
<?xml version="1.0" encoding="utf-8"?>
<zone version="1.0" target="ACCEPT">
<short>docker</short>
<description>zone for docker bridge network interfaces</description>
<interface name="docker_gwbridge"/>
<interface name="docker0"/>
</zone>
重新啟動、firewalld
重新啟動或重新載入後,這些介面將根據 出現在正確的區域中firewall-cmd --get-active-zones
。
$ firewall-cmd --get-active-zones
docker
interfaces: docker_gwbridge docker0
internal
interfaces: vethb6daacd veth0a3a13c veth3922477 veth1fc2c24 veth35f6f77 veth172d461 vethf457e97 vethed46b94 vethc3293eb vethe6c08de vethb1c5fb6 vethd6bcfd8 eth0
然而,幾分鐘後(通常不到一個小時),它們就會轉移到internal
區域,從而破壞容器中的網路。
$ firewall-cmd --get-active-zones
internal
interfaces: vethb6daacd veth0a3a13c veth3922477 veth1fc2c24 veth35f6f77 veth172d461 vethf457e97 vethed46b94 vethc3293eb vethe6c08de vethb1c5fb6 vethd6bcfd8 eth0 docker_gwbridge docker0 veth5686e56 vetha51060c vethde79c75
Afirewall-cmd --reload
又修復了一會兒。
這個問題看起來相關,但這些介面(如果我解釋正確的話)不是由 NetworkManager 管理的,所以我不認為這是錯誤的。
$ nmcli device
DEVICE TYPE STATE CONNECTION
eth0 ethernet connected eth0
docker0 bridge connected (externally) docker0
docker_gwbridge bridge connected (externally) docker_gwbridge
veth5686e56 ethernet unmanaged --
vetha51060c ethernet unmanaged --
vethde79c75 ethernet unmanaged --
lo loopback unmanaged --
$ ls /etc/sysconfig/network-scripts/
ifcfg-eth0
我找不到任何有趣的東西/var/log/firewalld
。我還有其他幾個節點,理論上它們的配置方式相同,不會有此問題。
我沒有設定節點,而且我不是系統管理員,但我正在嘗試弄清楚!有什麼至理名言嗎?
答案1
看起來 Chef 任務是造成這種情況的原因,Chef 在工作伺服器和損壞的伺服器之間莫名其妙地配置不同。