简析host-gw#前面分析了flannel vxlan模式进行容器跨主机通信的原理,但是vxlan模式需要对数据包进行额外的封包解包处理,带来的开销较大。所以flannel提供了另外一种纯3层转发的通信模式,叫做host-gw,顾明思议,这种模式是将主机作为网关在用了。先来看下网关在ip通信中的作用,例如,一个tcp包有源ip和目的ip,如果目的...
一、Flannel 的 host-gw 模式: host-gw 模式的工作原理,其实就是将每个 Flannel 子网(Flannel Subnet,比如:10.144.1.0/24)的“下一跳”,设置成了该子网对应的宿主机的 IP 地址,在这里主机”(Host)会充当这条容器通信路径里的“网关”(Gateway)。 备注:前置条件,Flannel host-gw 模式必须要求集群宿主机之间是...
host-gw模式需要将Pod调度到宿主机上,因此需要为宿主机打上标签。假设你要将宿主机node1标记为可调度host-gw模式的Pod节点,可使用以下命令进行标记: ```bash kubectl label node node1 node-role.kubernetes.io/worker=host-gw ``` 这条命令的含义是给节点node1打上host-gw标签,表示该节点可以调度host-gw模式...
创建veth网卡对,把一端插到新创建的pod的ns中,另一端插到cni0网桥上; 在pod的ns为刚刚创建的veth网卡设置IP,IP为host-local分配的值,默认网关设置为cni0的IP地址:10.244.1.1; 设置网卡的mtu,这个很关键,跟使用哪种跨节点通信方案相关,如果使用vxlan,一般就是1460,如果是host-gw,就是1500; 然后pod到主机、同...
容器“跨主通信”的三种主流实现方法:UDP、host-gw、VXLAN。 之前介绍了UDP和 VXLAN,它们都属于隧道模式,需要封装和解封装。接下来介绍一种纯三层网络方案, host-gw模式和Calico项目 Host-gw模式通过在宿主机上添加一个路由规则: <目的容器IP地址段> via <网关的IP地址> dev eth0 ...
由于在上一版的 host-gw 模式中,我是直接把代码都写死在 main.go 中了,后边想要拓展挺麻烦的,所以这次索性就改成了注册机制,这个 cni 目录下暴露了一个 Register 方法和一个 interface,只要在插件实现了这个 interface 就能把自己注册给这个 CNIManager。然后 main.go 中会根据配置文件中的配置信息自动执行不同...
flannel 支持vxlan、host-gw模式,udp模式已弃用。 在k8s中flannel作为标准CNI插件,每个节点都会运行一个flanneld的二进制代理程序 每个节点分配一个子网,集群网络状态通过apiserver直接存储在etcd当中 5.2 什么是VxLAN VXLAN即虚拟扩展局域网,是大二层网络中广泛使用的网络虚拟化技术 ...
5、Backend: Vxlan,host-gw,udp(最慢) flannel支持多种后端: 1.Vxlan 1.1 vxlan 1.2 Dirextrouting 2.host-gw:Host Gateway #不推荐,只能在二层网络中,不支持跨网络,如果有成千上万的Pod,容易产生广播风暴 3.UDP:性能差 【root@master ~】# kubectl get pods -o wide ...
顾名思义,host-gw 就是把宿主机 Host 当做 Gateway 网关来处理协议包的流动。这个方式上文其实也演示过了,至于节点的变化和路由表的增删也是依靠 flanneld 在做的。这个方案优缺点都很明显,最大的优点自然是性能,实打实的直接转发(性能整体比宿主机层面的通信低 10%,VXLAN 可是20% 起步,甚至 30%)。缺点也很...
flannel第二种协议叫host-gw(host gateway),即Node节点把自己的网络接口当做pod的网关使用,从而使不同节点上的node进行通信,这个性能比VxLAN高,因为它没有额外开销。不过他有个缺点,就是各node节点必须在同一个网段中。 另外,如果两个pod所在节点在同一个网段中,可以让VxLAN也支持host-gw的功能,即直接通过物理网卡...