今天刚在社区大佬的帮助下把kube-ovn u2o 功能理解了一下,这个功能就像名字一样,实现了underlay 到 overlay方向的连通性,基于路由实现,而非nat。
这里基于这张图把这个实现稍微讲一下:
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
跨节点:
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的路由