首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

聊聊 Flannel UDP

什么是Flannel Flannel是一种跨主机容器间的网络通信方案,本身只是一个框架,真正提供网络功能的是其具体的后端实现 Flannel的后端实现有哪几种?...UDP VXLAN host-gw Flannel TUN设备的作用是什么?...Flannel会在宿主机上创建一个flannel0设备,它是一个TUN设备,TUN设备工作在三层,用来在操作系统内核和应用程序之间传递IP包。 Flannel中的子网是?...设备在收到数据包以后,会交给创建该设备的Flannel进程 Flannel进程在收到数据包后,发现目的IP是100.96.2.5,根据Etcd维护的子网信息,可以找到容器对应的宿主机IP是10.168.0.3...因此只需要将数据包发往目的主机的8285端口即可 此时只要源主机和目的主机网络是相通的,数据包即可被正常发送到目的主机 Flannel UDP模式下的通信图如下: Flannel UDP模式的缺点 Flannel

19640

Flannel入门介绍

原始数据是在起始节点的Flannel服务上进行UDP封装的,投递到目的节点后就被另一端的Flannel服务还原成了原始的数据包,两边的Docker服务都感觉不到这个过程的存在。 ...这个IP范围是由Flannel自动分配的,由Flannel通过保存在Etcd服务中的记录确保它们不会重复。 ...第三个问题,为什么在发送节点上的数据会从docker0路由到flannel0虚拟网卡,在目的节点会从flannel0路由到docker0虚拟网卡?  我们来看一眼安装了Flannel的节点上的路由表。...回到顶部 3Flannel的安装和配置 Flannel是Golang编写的程序,因此的安装十分简单。 ...到此,整个Flannel集群也就正常运行了。  最后,前面反复提到过Flannel有一个保存在Etcd的路由表,可以在Etcd数据中找到这些路由记录,如下图。

72810
您找到你想要的搜索结果了吗?
是的
没有找到

说说Flannel VXLAN

VXLAN是Linux内核本身支持的一种网络虚拟化技术。 VXLAN的目的是?...上述过程我们都是VTEP设备的信息,但是VTEP设备所在的宿主机在哪我们还不清楚,为了知道宿主机在哪,flannel.1设备在这里还会扮演网桥的角色,在Linux内核中,网桥转发的依据需要查找一个FDB...VTEP设备的MAC地址,此时会进行第一次封包工作,在原始数据包上增加一个二层的数据头,如下图: 上述封装出来的数据帧并不能在我们的宿主机二层网络里面进行传输,因此Linux内核需要进一步进行封装,以便通过我们宿主机的...进一步封装二层数据帧,首先会增加一个VXLAN头,该头里面有一个重要的标志称之为VNI,在Flannel中VNI的默认值是1, Flannel默认的VETP设备都是flannel.1,它是VTEP设备识别该数据帧需不需要自己处理的重要标志...Linux接着会将数据帧封装成一个UDP包进行转发,因此会增加UDP的header UDP包是一个四层数据包,因此Linux内核会通过FDB表找到目的设备VTEP对应宿主机的IP,紧接着在IP包前面添加二层数据帧头

17640

白话 kubernetes 网络组件 Flannel

前言 今天来聊聊 FlannelFlannel 是 Kubernetes 默认网络组件,再聊 Flannel 时,我们得先明白一个叫 CNI 东东,CNI 是什么?能有什么用?下文会做出解释。...CNI 简单介绍 CNI(Container Network Interface)是 CNCF 旗下的一个项目,由一组用于配置Linux容器网络接口的规范和库组成,同时还包含了一些插件。...它基于Linux TUN/TAP,使用UDP封装IP包来创建overlay网络,并借助etcd维护网络的分配情况。...Flannel 原理 Flannel 实质上是一种 覆盖网络(overlay network),也就是将TCP数据包装在另一种网络包里面进行路由转发和通信,目前已经支持 UDP、VxLAN、Host Gw...一个是数据包的流出,当从节点出来的数据包,应该转发到哪个node上,这些都是由flannel去维护的。

1.3K20

CNI之Flannel网络原理

cni0:是一个linux bridge,用于连接同一个宿主机上的pod。 vethf12090da@if3:容器内eth0网卡的对端设备,从名字上看,在容器内eth0网卡的编号应为3。...地址(也就是VTEP设备的MAC地址),封装成数据桢,发送给目的VTEP设备 ,封装过程只是加了一个二层头,不会改变“原始IP包”的内容, Linux会再加上一个VxLAN头,VxLAN头里有一个重要的标志叫...在Flannel中,VNI的默认值是1,这也是为什么宿主机的VTEP设备都叫flannel.1的原因 一个flannel.1设备只知道另一端flannel.1设备的MAC地址,却不知道对应的宿主机地址是什么...在linux内核里面,网络设备进行转发的依据,来自FDB的转发数据库 https://juejin.cn/post/6994825163757846565 http://just4coding.com/...2021/11/03/flannel/

25350

kubernetes中常用网络插件之Flannel

二、VXLAN VXLAN:Virtual Extensible LAN(虚拟可扩展局域网),是Linux内核本身就支持的一种虚拟化网络技术,它可以完全在内核态实现上述的封装和解封装过程,减少用户态到内核态的切换次数...MAC地址,并将其加原始包上,封装成二层数据帧(将源MAC地址和目的MAC地址封装在它们对应的IP头外部); Linux内核把这个数据帧封装成普通的可传输的数据帧,通过宿主机的eth0进行传输(也就是在原有的数据帧上面加一个...VXLAN头VNI,它是识别某个数据帧是不是归自己处理的的重要标识,而在flannel中,VNI的默认值就是1,这是由于宿主机上的VTEP设备名称叫flannel.1,这里的1就是VNI的值); 然后Linux...内核会把这个数据帧封装到UDP包里发出去; Node02收到包后发现VNI为 1,Linux内核会对其进行解包,拿到里面的数据帧,然后根据VNI的值把它交给Node02上的flannel.1设备,然后继续进行接下来的处理...; 在这种场景下,flannel.1设备实际扮演的是一个网桥的角色,在二层网络进行UDP包的转发,在Linux内核中,网桥设备进行转发的依据是一个叫做FDB(Foewarding Database)的转发数据库

1.3K20

Kubernetes网络分析之Flannel

安装的过程非常简单,主要分为两步: 第一步安装flannel yum install flannel 或者通过kubernetes的daemonset方式启动,配置flannel用的etcd地址 第二步配置集群网络...flannel如何修改docker0网段呢?...可以看到每个主机上面都有到另外两台机器的路由,这个路由是onlink路由,onlink参数表明强制此网关是“在链路上”的(虽然并没有链路层路由),否则linux上面是没法添加不同网段的路由。...最后通过WriteSubnetFile写本地子网文件, # cat /run/flannel/subnet.env FLANNEL_NETWORK=10.254.0.0/16 FLANNEL_SUBNET...当然flannel启动后还需要持续的watch etcd里面的数据,这是当有新的flannel节点加入,或者变更的时候,其他flannel节点能够动态更新的那三张表。

2.2K40

基于flannel网络搭建的docker,flannel连接不上2379端口,etcd集群出现异常

异常现象 生产环境 三台服务器安装服务如下: 主机 服务 node01 docker、etcd、flannel node02 docker、etcd、flannel node03 docker、etcd...、flannel 三台服务器是一个etcd集群,然后基于flannel网络搭建的docker; 部署的服务node01上分别由config配置中心、discovery注册中心、gateway网关,剩下的服务都是基于前三个状态正常的情况下下才可以...systemctl stop firewalld && setenforce 0 flannel通过systemctl方式是可以正常启动,但是通过查看状态可以看到报错 systemctl status...flanneld 报错内容大概:连接不到X.X.X.X:2379那就是flannel连接不到etcd 连接出现异常 etcd是开机自启动的,然后需要启动flannel,接着启动docker但是没有效果!

91830

基于flannel网络搭建的docker,flannel连接不上2379端口,etcd集群出现异常

异常现象 生产环境 三台服务器安装服务如下: 主机 服务 node01 docker、etcd、flannel node02 docker、etcd、flannel node03 docker、etcd...、flannel 三台服务器是一个etcd集群,然后基于flannel网络搭建的docker; 部署的服务node01上分别由config配置中心、discovery注册中心、gateway网关,剩下的服务都是基于前三个状态正常的情况下下才可以...systemctl stop firewalld && setenforce 0 flannel通过systemctl方式是可以正常启动,但是通过查看状态可以看到报错 systemctl status...flanneld 报错内容大概:连接不到X.X.X.X:2379那就是flannel连接不到etcd 连接出现异常 etcd是开机自启动的,然后需要启动flannel,接着启动docker但是没有效果!

58710

k8s之flannel解读

Flannel是一个专为kubernetes定制的三层网络解决方案,主要用于解决容器的跨主机通信问题。...首先,flannel利用Kubernetes API或者etcd用于存储整个集群的网络配置,其中最主要的内容为设置集群的网络地址空间。...二、Flannel Network 实现原理 Flannel为每个主机提供独立的子网,整个集群的网络信息存储在etcd上。对于跨主机的转发,目标容器的IP地址,需要从etcd获取。...进程监听8285端口,负责解封包 解封装的数据包将转发到虚拟 NIC Flannel0 Flannel0查询路由表,解封包,并将数据包发送到Docker0 Docker0确定目标容器并发送包到目标容器...在常用的vxlan模式中,涉及到上面步骤提到的封包和拆包,这也是Flannel网络传输效率相对低的原因。

1.2K31

Docker网络解决方案-Flannel部署记录

flannel 使用etcd存储配置数据和子网分配信息。flannel 启动之后,后台进程首先检索配置和正在使用的子网列表,然后选择一个可用的子网,然后尝试去注册它。...这个IP范围是由Flannel自动分配的,由Flannel通过保存在Etcd服务中的记录确保它们不会重复。...3)为什么在发送节点上的数据会从docker0路由到flannel0虚拟网卡,在目的节点会从flannel0路由到docker0虚拟网卡?...flannel的key(这个只在安装了etcd的机器上操作) Flannel使用Etcd进行配置,来保证多个Flannel实例之间的配置一致性,所以需要在etcd上进行如下配置('/atomic.io/...这个IP范围是由Flannel自动分配的,由Flannel通过保存在Etcd服务中的记录确保它们不会重复。

2K80
领券