如何解決swarm docker 端口不通問題

swarm docker端口不通的解決辦法:1、編輯配置文件,添加配置“net.ipv4.ip_forward=1”;2、通過“systemctl restart network”重啟網(wǎng)絡(luò)。

如何解決swarm docker 端口不通問題

本文操作環(huán)境:centOS6.8系統(tǒng)、Docker 18.09.x版、Dell G3電腦。

如何解決swarm docker 端口不通問題?docker swarm網(wǎng)絡(luò)問題

問題:

docker主機(jī)內(nèi)部網(wǎng)絡(luò)正常,與其它主機(jī)的連接失效,其它主機(jī)不能連接docker主機(jī)上映射的端口,docker內(nèi)部也無法連接外部主機(jī)。

服務(wù)器環(huán)境如下:

  • 所在系統(tǒng)centos
  • docker info
WARNING: IPv4 forwarding is disabled WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled

解決方法

  • 編輯配置文件

vim /etc/sysctl.conf

添加配置

net.bridge.bridge-nf-call-ip6tables=1 net.bridge.bridge-nf-call-iptables=1 net.bridge.bridge-nf-call-arptables=1 net.ipv4.ip_forward=1

執(zhí)行 sysctl -p 生效

  • 重啟網(wǎng)絡(luò)

systemctl restart network

再次查看docker info,警告消失,主機(jī)上的docker網(wǎng)絡(luò)恢復(fù)正常。


重點(diǎn),針對(duì)云服務(wù)器

我所使用的服務(wù)器是阿里云服務(wù)器
如果你的集群使用的默認(rèn)端口4789,那么你可能遇到跟我一樣的問題。

阿里云的幫助文檔中有這樣一句話:

在添加UDP監(jiān)聽前,注意如下限制:
UDP監(jiān)聽的250、4789和4790三個(gè)端口為系統(tǒng)保留端口,暫時(shí)不對(duì)外開放。
詳情

在19.03及之后的版本,docker在swarm init之上增加了–data-path-port uint32 的配置項(xiàng)用于更改docker swarm的VXLAN端口。
修改端口之后成功解決問題

sudo docker swarm init --data-path-port 5789

其他問題

查看docker日志(journalctl -u docker -n 20 -f )發(fā)現(xiàn) :

level=error msg="error reading the kernel parameter net.ipv4.vs.expire_nodest_conn"  error="open /proc/sys/net/ipv4/vs/expire_nodest_conn: no such file or directory"

出現(xiàn)這個(gè)原因是因?yàn)樗拗鳈C(jī)沒有加載ip_vs模塊。在各個(gè)節(jié)點(diǎn)加載ip_vs模塊后重啟docker即可。【推薦學(xué)習(xí):《docker視頻教程》】

modprobe ip_vs service docker restart

以上就是如何解決swarm

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊14 分享