kube-ovn underlay2overlay 功能

585 阅读1分钟

今天刚在社区大佬的帮助下把kube-ovn u2o 功能理解了一下,这个功能就像名字一样,实现了underlay 到 overlay方向的连通性,基于路由实现,而非nat。

f81a921f3d6b1fb70a0e0fdb070c512.png

这里基于这张图把这个实现稍微讲一下:

1. ovn-default 业务pod直接进出

ovn-default 是一个基于provider-network,vlan,subnet建出来的一个underlay子网。那这个子网内的资源实际上能underlay 直接访问。

出: 分布式场景那就是本地出。 pod1(172.18.0.8) --> ovn-default --> br-int-->loalnet.ovn-default-->br-provider

进的话就是反过来。

这个功能是ovs本身就具备的功能,不是u2o的目的。

2. net1 业务pod直接出

出: 分布式模式就是port-group的策略路由直接本地出

pod1--> net1-->ovn-cluster--> join-->ovn0-->snat(masqurade)-->eth0

这个功能是默认vpc的出网设计,单网卡环境就能做到,当然这个也不是u2o的目的

3. underlay的pod 直接访问overlay的pod

image.png

跨节点:

pod1 --> ovn-default -->lrp(172.18.0.19/24) -->ovn-cluster --> net1 --> pod1

pod1-->net1-->ovn-cluster-->lrp(172.18.0.19/24)-->ovn-default-->pod1

这条策略路由实际上是专门面向 provider network vlan subnet 的一条"明细"路由。 由于没有像原来那样走nat,性能会更好。

如何使用

# 1. 部署时启用该特性
# install.sh
> U2O_INTERCONNECTION=${U2O_INTERCONNECTION:-true}

# 2. 创建 provider underlay vlan subnet 时,subnet spec 启用 u2oInterconnection: true

## 然后就可以看到

 k ko nbctl show ovn-cluster
 ### 多了一个lrp 连接ovn-cluster 到 你的公网 
 ### 该lrp的ip 就是underlay subnet status中 u2oInterconnectionIP的ip
 
 
 ### 以及 策略路由多了 从你的underlay 子网到 ovn-default的路由