Weave 与外网通信
weave 是一个私有的 VxLAN 网络,默认与外部网络隔离。
外部网络如果要访问到 weave 中的容器:1、首先将主机加入到 weave 网络。2、然后把主机当作访问 weave 网络的网关。
要将主机加入到 weave,执行 weave expose。
这个 IP 10.32.0.3 会被配置到 host1 的 weave 网桥上。
现在 host1 的网络结构:
weave 网桥位于 root namespace,它负责将容器接入 weave 网络。
给 weave 配置同一 subnet 的 IP 其本质就是将 host1 接入 weave 网络。
host1 现在已经可以直接与同一 weave 网络中的容器通信了,无论容器是否位于 host1。
在 host1 中 ping 同一主机的 bbox1:
ping host2 上的 bbox3:
接下来要让其他非 weave 主机访问到 bbox1 和 bbox3,只需将网关指向 host1。例如在 10.12.31.21 上添加如下路由:
ip route add 10.32.0.0/12 via 10.12.31.22
能够 ping 到 weave 中的容器了。
容器通过访问外网:容器本身就挂在默认的 bridge 网络上,docker0 已经实现了 NAT,所以容器无需额外配置就能访问外网。
IPAM
10.32.0.0/12 是 weave 网络使用的默认 subnet,如果此地址空间与现有 IP 冲突,可以通过 --ipalloc-range 分配特定的 subnet。
weave launch --ipalloc-range 10.2.0.0/16
不过请确保所有 host 都使用相同的 subnet。
-------------------------------------------------引用来自-----------------------------------------------------
https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587843&idx=1&sn=860bc5b0b053f9b677ec928916871a37&chksm=8d30819aba47088c18d5603d1f90bfd31d7ce04018b30260b66126752f5fbc327716e5ad7ea3&scene=21#wechat_redirect