5.3.2.2. Flannel SDN
flannel 是专为容器而设计的虚拟网络层。OpenShift Container Platform 可以将其用于网络容器,而不是默认的软件定义型网络(SDN)组件。这在也依赖 SDN(如 OpenStack)的云供应商平台中运行 OpenShift Container Platform 非常有用,并且您希望避免将数据包封装两个平台两次。
架构
OpenShift Container Platform 在 host-gw 模式下运行 flannel,它将容器的路由映射到容器。网络中的每个主机都运行一个名为 flanneld 的代理,该代理负责:
- 管理每个主机上的唯一子网
- 将 IP 地址分发到其主机上的每个容器
- 将路由从一个容器映射到另一个容器,即使在不同的主机上
每个 flanneld 代理都向集中式 etcd 存储提供此信息,因此主机上的其他代理可以将数据包路由到 flannel 网络中的其他容器。
下图演示了使用 flannel 网络从一个容器到另一个容器的架构和数据流:
节点 1 将包含以下路由:
default via 192.168.0.100 dev eth0 proto static metric 100 10.1.15.0/24 dev docker0 proto kernel scope link src 10.1.15.1 10.1.20.0/24 via 192.168.0.200 dev eth0
节点 2 将包含以下路由:
default via 192.168.0.200 dev eth0 proto static metric 100 10.1.20.0/24 dev docker0 proto kernel scope link src 10.1.20.1 10.1.15.0/24 via 192.168.0.100 dev eth0