ovn架构
参考: https://www.ovn.org/support/dist-docs/ovn-architecture.7.html
CMS ---- neutron|kube-ovn-controller
|
|
+-----------|-----------+
| | |
| OVN/CMS Plugin |
| | |
| | |
| OVN Northbound DB |
| | |
| | |
| ovn-northd |
| | |
+-----------|-----------+
|
|
+-------------------+
| OVN Southbound DB |
+-------------------+
|
|
+------------------+------------------+
| | |
HV 1 | | HV n |
+---------------|---------------+ . +---------------|---------------+
| | | . | | |
| ovn-controller | . | ovn-controller |
| | | | . | | | |
| | | | | | | |
| ovs-vswitchd ovsdb-server | | ovs-vswitchd ovsdb-server |
| | | |
+-------------------------------+ +-------------------------------+
# 1. 整理kube-ovn的服务并与上述拓扑对应
1. kube-ovn-controller k8s cni 网络crd 控制平面:网络 crd 控制器,ipam,单点运行,主备模式,k8s leader选举
2. ovn-central ovn-网络控制平面 接受逻辑流表,存入nb-db,经ovn-northd将逻辑流表转化为物理流表,存入ovn-sb-db
包含:
ovn-nb-db raft 选举,全量快照同步,磁盘最好上ssd
ovn-northd
ovn-sb-db raft 选举,全量快照同步,磁盘最好上ssd
另一个方案,目前同步功能虽然存在,但是受网络波动,磁盘性能等异性相,以及全量快照同步的方式影响,单节点维护也是一个非常靠谱的方案。
类似neutron, kube-ovn也有从数据库(etcd)恢复网络控制平面数据的方案。
当然这种方案可能恢复的时间慢点,适合私有云场景。
公有云大集群还是需要深入底层提供快照增量同步的方式,提高同步效率
ovn-northd 承上启下 上承 nb-db,下接 sb-db
这三个组件确实是ovn 控制平面的核心,所以命名central
3. ovs-ovn ovn 网络转发平面
ovn-controller 从sb-db 同步物理流表
ovs-vswitchd 软件交换机
ovsdb-server 面向流表的持久化数据库,物理机重启后,可直接恢复网络功能
## 位于每一个节点
4. kube-ovn-cni
该组件用于下发kube-ovn cni
同时为kube-ovn cni提供ipam功能,有部分qos逻辑好像在这里面实现
其实ovn-controller有两种角色,一种是只负责大二层的,另一种还提供公网网关snat功能的,在neutron里面前者就是ovn-controller,后者叫做ovn-gw-controller
其实主要在于ovn-controller对应的chassis是否加入到ha chassis group,绑定到lrp。
# 2. 整理neutron-ovn的服务并与上述拓扑对应
# 集群ovn agent
# 控制(网络)节点
(py3env) [root@control01 ~]# neutron agent-list | grep -v compute
+--------------------------------------+------------------------------+------------+-------------------+-------+----------------+----------------------------+
| id | agent_type | host | availability_zone | alive | admin_state_up | binary |
+--------------------------------------+------------------------------+------------+-------------------+-------+----------------+----------------------------+
| control02 | OVN Controller Gateway agent | control02 | | :-) | True | ovn-controller |
| 76f8382f-8af1-4eb7-85da-82f05952013a | OVN Metadata agent | control02 | | :-) | True | neutron-ovn-metadata-agent |
+--------------------------------------+------------------------------+------------+-------------------+-------+----------------+----------------------------+
(py3env) [root@control01 ~]# neutron agent-list | grep compute010
+--------------------------------------+------------------------------+------------+-------------------+-------+----------------+----------------------------+
| compute010 | OVN Controller agent | compute010 | | :-) | True | ovn-controller |
| 190b3f77-8111-48f5-a25f-0ee19fa7a3f8 | OVN Metadata agent | compute010 | | :-) | True | neutron-ovn-metadata-agent |
+--------------------------------------+------------------------------+------------+-------------------+-------+----------------+----------------------------+
# controller01
neutron_server
# control02
neutron_server
neutron_ovn_metadata_agent
ovn_northd
ovn_sb_db
ovn_nb_db
ovn_controller # ovn gw 节点,负责网关
openvswitch_vswitchd
openvswitch_db
# compute
neutron_ovn_metadata_agent
ovn_controller # 仅负责大二层
openvswitch_vswitchd
openvswitch_db
网友评论