flannel三种实现

udp
vxlan
host-gw

我不想把细枝末节给你说的特别细,我只想说一个大体思路,你从中体会出区别,具体实现再自己细扣。

node相当于一个城市。
eth0相当于一个城市的地址。
flannel0设备相当邮局,所有信件都要经过他。
flanned监听在8025端口相当于邮局的业务员,负责处理来往的信件。
docker0网桥相当于快递员,同城的信件需要通过他,夸城的快递也要通过他。
container相当于每家每户,每家门户都有自己的门牌号,比如A城的门牌号都以100.96.1.0开头,和快递员在同一个子网,相当于在同一个城。
etcd相当于一个邮局总部

udp

在这里插入图片描述

现在A城的container1(李雷家)要和B城的container2(韩梅家)通信,信件(IP包)地址为100.96.1.2 -> 100.96.2.3 。快递员收到快递后送到邮局,邮局将信件交到了业务员手里,业务员看到信件地址知道“李雷想联络韩梅”,但是韩梅家的地址是100.96.2.3 和李雷不在同一个城市,业务员并不知道韩梅在哪个城市所以给邮局总部打了一个电话询问100.96.2.3 在哪个城市?总部将B城的地址告诉了业务员,于是业务员把信件装在了另外一个(UDP)信封里,UDP信件地址为A城地址10.168.0.2 -> B城地址10.168.0.3,信件到达B城邮局后到达了业务员手里,业务员拆开udp信封看到里面的ip信封,看到了目标地址为100.96.2.3于是将信件交给了快递员,快递员将信件送到了韩梅家。

vxlan

在这里插入图片描述
业务员必须给总部打电话才能知道门牌号对应的城市地址。
在这里插入图片描述
总结一下啊,其实就是三层网络,flannel就是路由器,cni0网桥就是交换机,flannel.1他的作用就是和其他的节点通信,每个节点容器的ip都绑定到网桥cni0上,但是如何给每个容器分配ip呢?如何创建cni0网桥呢?如何让k8s知道容器的信息等等?交给一个cni插件来做,这个插件不行就换一个插件,插来插去的总能行,说白了就是解放你的双手,让你的双手做去做别的。。。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐