flannel vxlan切换成host-gw

flannel 支持多种 backend,前面我们讨论的是 vxlan,host-gw 是 flannel 的另一个 backend,本节会将前面的 vxlan backend 切换成 host-gw。


与 vxlan 不同,host-gw 不会封装数据包,而是在主机的路由表中创建到其他主机 subnet 的路由条目,从而实现容器跨主机通信。要使用 host-gw 首先修改 flannel 的配置 flannel-config.json:
{
"Network": "10.2.0.0/16",
"SubnetLen": 24,
"Backend": {
   "Type": "host-gw"
}
}



Type 用 host-gw 替换原先的 vxlan。更新 etcd 数据库:
etcdctl --endpoints=192.168.56.101:2379 set /docker-test/network/config < flannel-config.json


Ctrl+C 掉之前 host1 和 host2 的 flanneld 进程并重启。
flanneld -etcd-endpoints=http://192.168.56.101:2379 -iface=enp0s8 -etcd-prefix=/docker-test/network


host1 上 flanneld 启动输出如下:

 


与之前 vxlan backend 启动时有几点不同:
① flanneld 检查到原先已分配的 subnet 10.2.40.0/24,重用之。
② flanneld 从 etcd 数据库中检索到 host2 的 subnet 10.2.17.0/24,但因为其 type=vxlan,立即忽略。
③ 两分钟后,再次发现 subnet 10.2.17.0/24,将其加到路由表中。这次没有忽略 subnet 的原因是此时我们在 host2 上重启了 flanneld,根据当前 etcd 的配置使用 host-gw backend。
查看 host1 的路由表,增加了一条到 10.2.17.0/24 的路由,网关为 host2 的 IP 192.168.56.105。


类似的,host2 启动 flanneld 时会重用 subnet 10.2.17.0/24,并将 host1 的 subnet 10.2.40.0/24 添加到路由表中,网关为 host1 IP 192.168.56.104。


从 /run/flannel/subnet.env 可以看到 host-gw 使用的 MTU 为 1500:


这与 vxlan MTU=1450 不同,所以应该修改 docker 启动参数 --mtu=1500并重启 docker daemon。
下面对 host-gw 和 vxlan 这两种 backend 做个简单比较。


  • host-gw 把每个主机都配置成网关,主机知道其他主机的 subnet 和转发地址。vxlan 则在主机间建立隧道,不同主机的容器都在一个大的网段内(比如 10.2.0.0/16)。
  • 虽然 vxlan 与 host-gw 使用不同的机制建立主机之间连接,但对于容器则无需任何改变,bbox1 仍然可以与 bbox2 通信。
  • 由于 vxlan 需要对数据进行额外打包和拆包,性能会稍逊于 host-gw。

四、扩展阅读

这片文章对于flannel的不同模式的性能进行了检测,可以进行参考:

《Comparison of Networking Solutions for Kubernetes》

http://machinezone.github.io/research/networking-solutions-for-kubernetes/

参考:

https://www.cnblogs.com/chenqionghe/p/11718365.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
flannel_v0.12.0-amd64.tar是一个压缩文件,它是Flannel网络插件的一个版本。Flannel是一个用于容器网络的项目,旨在为容器提供可扩展、可靠和高性能的网络解决方案。 通过下载和解压flannel_v0.12.0-amd64.tar文件,可以获取Flannel v0.12.0版本的相关文件和组件。其中,v0.12.0表示这是Flannel的第12个主要发布版本,同时带有一些修复和改进的功能。 在这个压缩包中,可能包含了Flannel执行文件、配置文件、相关的文档和依赖库等。可以使用tar命令进行解压,并按照Flannel的文档进行安装、配置和使用。 Flannel的主要功能是为Kubernetes集群中的容器提供网络功能。它通过为每个节点分配一个唯一的子网,并管理容器和虚拟机之间的网络通信,实现了容器之间的网络隔离和跨主机通信。 在Flannel中,网络地址分配使用了不同的网络后端,例如VXLANHost-Gateway等。这些后端提供了不同的网络模式和策略,以适应不同的使用场景和网络环境。 通过安装和配置Flannel,可以使得容器能够通过内部的虚拟网络与其他容器进行通信,同时能够与外部网络进行连接。这为容器的网络部署和管理提供了便利和灵活性。 总之,flannel_v0.12.0-amd64.tar是Flannel网络插件的一个版本压缩文件,通过下载和解压可以获取Flannel v0.12.0版本的相关文件和组件,用于为容器提供可靠和高性能的网络解决方案。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值