跨docker容器组通信
跨docker容器组通信
之所以要进行容器组通信,是因为之前,k8s上部署fabric,kafka没有部署成功,所以想
fabric直接使用本地部署的kafka。
但发现,k8s上部署的容器ip是172.17.*.*,kafka的网络e2e_default是172.18.*.*。
由于docker的网络隔离,两个ip段的容器组没法直接通信,互相ping不通,但宿主机是可以
ping通两个ip段的,以及容器组可以ping通两个容器组的网卡,设想成路由器,将两个端口
连起来,实现网络通路,所以打算修改ip转发,将两个容器组连起来。
docker的跨主机网络通信,一般会采用网络插件,但为了简单,这里我们通过iptables,
通过修改ip转发规则,实现两个容器组的网络通信。
-
两个容器组网关
-
网络状态
- 测试用busybox(k8s组ip172.17.0.7)
- 测试用kafka(docker本地组ip172.18.0.7)
-
修改iptables转发链
iptables -I FORWARD -d 172.18.0.1/16 -j ACCEPT iptables -I FORWARD -s 172.18.0.1/16 -j ACCEPT
- FORWARD链中增加了172.18.0.0/16
- FORWARD链中增加了172.18.0.0/16
-
测试互通
-
refs