如何使用 flannel host-gw backend?- 每天5分钟玩转 Docker 容器技术(62)

简介:

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 做个简单比较。

  1. host-gw 把每个主机都配置成网关,主机知道其他主机的 subnet 和转发地址。vxlan 则在主机间建立隧道,不同主机的容器都在一个大的网段内(比如 10.2.0.0/16)。

  2. 虽然 vxlan 与 host-gw 使用不同的机制建立主机之间连接,但对于容器则无需任何改变,bbox1 仍然可以与 bbox2 通信。

  3. 由于 vxlan 需要对数据进行额外打包和拆包,性能会稍逊于 host-gw。

至此 flannel 已经讨论完了,下一节我们开始学习另一个网络方案:Weave。

二维码+指纹.png



本文转自CloudMan6 51CTO博客,原文链接:http://blog.51cto.com/cloudman/1961580

相关文章
|
12月前
|
Kubernetes Devops Docker
Kubernetes 和 Docker Swarm:现代 DevOps 的理想容器编排工具
本指南深入解析 Kubernetes 与 Docker Swarm 两大主流容器编排工具,涵盖安装、架构、网络、监控等核心维度,助您根据团队能力与业务需求精准选型,把握云原生时代的技术主动权。
946 115
|
12月前
|
缓存 前端开发 Docker
Docker Layer Caching:加速你的容器构建
Docker Layer Caching:加速你的容器构建
|
11月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
880 52
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
11月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
993 6
|
11月前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
928 6
|
11月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
801 2