\n
openstack架構中,neutron作為虛擬網路模組,管理虛機的網路。隨著容器技術的發展,越來越多的應用部署到kubernetes等容器編排系統中,而kubernetes也有自帶的網路管理模組,如flannel,calico等。分別維護openstack、kubernetes網路模組,不僅增加管理成本,且無法滿足虛機和容器網路互通等需求。為了統一管理不同編排系統的網路模組,簡化虛擬網路功能的開發流程,虛擬網路工作組實現了新的虛擬網路架構cable。
\n\n
目前公司的虛擬網路架構有如下不足:
\n\n
新的網路架構需要滿足統一管理物理機、虛機和容器網路,實現直接互聯互通;簡化neutron agent,分布式架構實現dhcp、metadata等功能;在虛擬網路層面實現vxlan;提供流量映象等新功能。
\n\n
為了滿足上訴需求,cable架構實現了如下兩個關鍵點:
\n\n
虛擬資料平面不再基於ovs,而是採用功能更為豐富虛擬路由器vrouter.ko。vrouter.ko是juniper的虛擬網路架構opencontrail中的開源資料模組。相比於ovs的簡單資料報**,vrouter.ko支援虛擬網路路由、vxlan、流表配置安全組、流表配置nat/snat、流量映象等功能。豐富的資料平面功能,簡化了網路功能模組的開發難度。\n
重新自研開發管理平面。管理平面統一管理openstack和kubernetes網路模組;採用kubernetes裡的watch方式,主動監控平台資源變化情況,並執行相關操作;分布式實現dhcp;用vrouter.ko中的flow功能實現nat、安全組等。\n
\ncable的整體框架如圖1所示。
\n\n圖1 cable整體框架圖
\ncable工作流程如圖2所示。當使用者請求到達neutron server後,contrail neutron plugin將請求**至cable的控制節點(control node)。控制節點的proxy轉換請求傳送至api,api將接收到的請求傳送至相應模組,其中controller負責具體的計算和分配工作,ipam模組負責網路位址的管理。每台計算節點部署了cable agent,通過rest api監聽control node的資源,如監聽到資源變化,則呼叫vrouter.ko執行相應請求(新增/刪除/修改網路資訊)。
\n\n圖2 cable工作流程
\n\n
cable需要考慮如何與現有的虛擬網路結構相容,使得neutron能夠平滑過渡到新的架構上。所以在保持neutron原有介面不變的基礎上,將neutron的db替換為etcd,並將dhcp-agent,metadata-agent,l3-agent替換為統一的cable-agent。將neutron用cable替代後,openstack的相關命令列和restful api都沒有變化,實現無縫切換,方便運維管理。
\n\n圖3 cable替代nuetron後openstack架構圖
\n\n
新的虛擬網路架構,相容了不同網路平面,簡化了網路功能模組,使得網路更為健壯。目前cable的整體架構已經基本開發完成,實現了dhcp、metadata和vlan架構網路,後續將實現安全組、vxlan等更多功能,並實現自動化部署,完善監控功能。
\n
Cable 360實現的新虛擬網路架構
openstack架構中,neutron作為虛擬網路模組,管理虛機的網路。隨著容器技術的發展,越來越多的應用部署到kubernetes等容器編排系統中,而kubernetes也有自帶的網路管理模組,如flannel,calico等。分別維護openstack kubernetes網路模組,不僅增加管...
Cable 360實現的新虛擬網路架構
openstack架構中,neutron作為虛擬網路模組,管理虛機的網路。隨著容器技術的發展,越來越多的應用部署到kubernetes等容器編排系統中,而kubernetes也有自帶的網路管理模組,如flannel,calico等。分別維護openstack kubernetes網路模組,不僅增加管...
Cable 360實現的新虛擬網路架構
openstack架構中,neutron作為虛擬網路模組,管理虛機的網路。隨著容器技術的發展,越來越多的應用部署到kubernetes等容器編排系統中,而kubernetes也有自帶的網路管理模組,如flannel,calico等。分別維護openstack kubernetes網路模組,不僅增加管...