共计 1595 个字符,预计需要花费 4 分钟才能阅读完成。
近期公司的 flannel 网络很不稳定,花时间研究了下并且保证云端自动部署的网络能够正常 work。
1. 网络拓扑
拓扑如下:(摘抄自 Google 搜索)
容器网卡通过 docker0 桥接到 flannel0 网卡,而每个 host 对应的 flannel0 网段为 10.1.x.[1-255]/24,而 flannel 所组成的一个跨 host 的网段为 10.1.x.x/16,而 flannel0 则为 flanneld 进程虚拟出来的网卡。
docker0 的地址是由 /run/flannel/subnet.env 的 FLANNEL_SUBNET 参数决定的。
2.HostA 的 Container1 和 HostB 的 Container2 如何通信
host A 的 container1 请求 host B 的 container2 的的数据时,流程如下:根据 host A 的路由规则 “10.1.15.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0“数据交给 docker0 处理。
docker0 会收到数据,然后根据路由规则”10.1.0.0 0.0.0.0 255.255.0.0 U 0 0 0 flannel0″ 数据被交由给 flannel0 网卡处理。flanneld 会把数据封包然后送给 eth0,用 udp 协议发送到对方 host 的 eth0 网卡。
host B 的 eth0 网卡收到后,根据路由规则 10.1.0.0 0.0.0.0 255.255.0.0 U 0 0 0 flannel0″ 则交给 flannel0 网卡处理。
flanneld 会把数据解包,根据路由规则“10.1.20.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0″ 交给 docker0 处理。
则 host B 的 container 2 将会收到数据。
至此网路通信解释完毕。
3. 自动部署程序中添加物理机需要注意的地方
基于上,故而:
网卡 docker0、flannel0 网卡的正确建立。
路由被正确配置!10.1.x.[1-255]/24 和 10.1.x.x/16 两个网段的正确路由配置。
我们的网络环境检查都基于此。通常情况下,以上两者可以自动正确建立成功,但有时候会出现异常。
添加物理机时候检查网络环境 ifconfig docker0 和 flannel0 并且需要正确配置路由规则。
Ubuntu 15.04 下安装 Docker http://www.linuxidc.com/Linux/2015-07/120444.htm
配置 Docker 镜像下载的本地 mirror 服务 http://www.linuxidc.com/Linux/2015-07/120061.htm
Docker 安装应用 (CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm
在 Docker 中使用 MySQL http://www.linuxidc.com/Linux/2014-01/95354.htm
在 Ubuntu Trusty 14.04 (LTS) (64-bit) 安装 Docker http://www.linuxidc.com/Linux/2014-10/108184.htm
Docker 安装应用 (CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm
Ubuntu 14.04 安装 Docker http://www.linuxidc.com/linux/2014-08/105656.htm
阿里云 CentOS 6.5 模板上安装 Docker http://www.linuxidc.com/Linux/2014-11/109107.htm
Docker 的详细介绍 :请点这里
Docker 的下载地址 :请点这里
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2015-08/121169.htm