第 8 章 容器网络 - 066 - Weave 如何与外网通信?

时间:2021-10-04 20:20:45

Weave 与外网通信

weave 是一个私有的 VxLAN 网络,默认与外部网络隔离。

外部网络如果要访问到 weave 中的容器:1、首先将主机加入到 weave 网络。2、然后把主机当作访问 weave 网络的网关。

要将主机加入到 weave,执行 weave expose。

第 8 章 容器网络 - 066 - Weave 如何与外网通信?

这个 IP 10.32.0.3 会被配置到 host1 的 weave 网桥上。

第 8 章 容器网络 - 066 - Weave 如何与外网通信?

现在 host1 的网络结构:

第 8 章 容器网络 - 066 - Weave 如何与外网通信?

weave 网桥位于 root namespace,它负责将容器接入 weave 网络。

给 weave 配置同一 subnet 的 IP 其本质就是将 host1 接入 weave 网络。

host1 现在已经可以直接与同一 weave 网络中的容器通信了,无论容器是否位于 host1。

在 host1 中 ping 同一主机的 bbox1:

第 8 章 容器网络 - 066 - Weave 如何与外网通信?

ping host2 上的 bbox3:

第 8 章 容器网络 - 066 - Weave 如何与外网通信?

接下来要让其他非 weave 主机访问到 bbox1 和 bbox3,只需将网关指向 host1。例如在 10.12.31.21 上添加如下路由:

ip route add 10.32.0.0/12 via 10.12.31.22

能够 ping 到 weave 中的容器了。

第 8 章 容器网络 - 066 - 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