如何使用 flannel host-gw backend?- 每天5分钟玩转 Docker 容器技术(62)
来源:互联网 发布:美的网络专供 代码 编辑:程序博客网 时间:2024/06/05 17:24
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 已经讨论完了,下一节我们开始学习另一个网络方案:Weave。
- 如何使用 flannel host-gw backend?- 每天5分钟玩转 Docker 容器技术(62)
- 如何使用 Weave 网络?- 每天5分钟玩转 Docker 容器技术(63)
- 如何使用 Secret?- 每天5分钟玩转 Docker 容器技术(108)
- 如何实现跨 Docker 主机存储?- 每天5分钟玩转 Docker 容器技术(73)
- Docker 如何支持多种日志方案?- 每天5分钟玩转 Docker 容器技术(88)
- Docker 组件如何协作?- 每天5分钟玩转Docker容器技术(8)
- Docker 组件如何协作?- 每天5分钟玩转Docker容器技术(8)
- Docker 组件如何协作?- 每天5分钟玩转Docker容器技术(8)
- 如何运行容器?- 每天5分钟玩转 Docker 容器技术(22)
- 如何自定义容器网络?- 每天5分钟玩转 Docker 容器技术(33)
- 容器如何访问外部世界?- 每天5分钟玩转 Docker 容器技术(36)
- Docker 组件如何协作?- 每天5分钟玩转容器技术(8)
- 如何共享数据?- 每天5分钟玩转 Docker 容器技术(41)
- overlay 如何实现跨主机通信?- 每天5分钟玩转 Docker 容器技术(52)
- overlay 是如何隔离的?- 每天5分钟玩转 Docker 容器技术(53)
- 如何共享数据?- 每天5分钟玩转 Docker 容器技术(41)
- Weave 如何与外网通信?- 每天5分钟玩转 Docker 容器技术(66)
- 如何部署 Calico 网络?- 每天5分钟玩转 Docker 容器技术(67)
- 分布式事务的典型处理方式:2PC、TCC、异步确保和最大努力型
- 每篇博文是不是需要审核才能看到
- 前端页面自定义分组
- Spring PropertySourcesPlaceholderConfigurer工作原理
- 掌握C++[初学]
- 如何使用 flannel host-gw backend?- 每天5分钟玩转 Docker 容器技术(62)
- CTF web题总结--爆破用户名密码
- [FAQ10470]锁屏界面运营商名称显示全大写
- No found method ConfigurationInternal.getModule()
- ajax 请求后台并遍历
- IPC多进程之完整解析——多进程的定义、多进程的运行模式(1)
- 方差分析
- ZStack基础学习一
- TiDB 文档介绍