Kuryr kubernetes nested by vlan

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liuliuzi_hz/article/details/80647893
Kuryr kubernetes 除了支持bare-metal 部署,还支持nested 部署,也就是容器部署在VM内而不是在物理主机上。POD部署在VM内时就要考虑网络如何穿透VM。当前Kuryr支持vlan 和macvlan两种方法。
vlan 方法主要依靠neutral 提供的vlan trunk port 功能,即VM接入的port是trunk 而不是常见的具体某个tag的vlan port。
这是OpenStack Kilo版本的特性,由 VLAN trunking networks for NFV 定义。这个特性为Neutron network增加一个属性“vlan-transparent”,当vlan-transparent为True时,表明在这个Neutron network是一个Trunk network。在这个Neutron network中的虚机可以使用Linux VLAN Trunk功能。
具体见图



左上角是正常的OpenVSwitch上连接的虚机。再看虚线框内,上半部分与原来虚机伸出的部分相同,下半部分就是之前展示的新增的网桥。网桥向上通过qvo连接虚机。向下通过patch port pair <tpt-tpi>连接parent port,从虚机出来的不带VLAN Tag的帧,从这对patch port走到br-int。同时向下通过patch port pair <spt-spi>连接subport,一个subport对应一对spt-spi,注意的是每个spt都带有相应的VLAN Tag,根据OVS的特性,所有从虚机出来的,带上相应VLAN Tag的帧都会发送到相应的spt,再通过spi发送到br-int。
所以,从虚机出来的Ethernet Frame,根据所携带的VLAN Tag(或者不带VLAN Tag),在tbr网桥上,可以分配到不同的patch port,进而转发到br-int上的不同端口。也就是说,在tbr上,从虚机里一块网卡发出来的Ethernet Frame被分流了。

当Kuryr 通过 vlan nested 部署时候,Kuryr 通过neutron 申请vlan 类型的网络,并申请相应的port,并挂载到POD 内,这样带有vlan tag的网络数据包就可以通过VM的vlan trunk 到达外部。
具体见图


猜你喜欢

转载自blog.csdn.net/liuliuzi_hz/article/details/80647893