您好,登錄后才能下訂單哦!
女主宣言
本文主要介紹為了統一管理不同編排系統的網絡模塊,簡化虛擬網絡功能的開發流程,虛擬網絡工作組實現的新虛擬網絡架構--Cable。
前言
OpenStack架構中,Neutron作為虛擬網絡模塊,管理虛機的網絡。隨著容器技術的發展,越來越多的應用部署到Kubernetes等容器編排系統中,而Kubernetes也有自帶的網絡管理模塊,如Flannel,Calico等。分別維護OpenStack、Kubernetes網絡模塊,不僅增加管理成本,且無法滿足虛機和容器網絡互通等需求。為了統一管理不同編排系統的網絡模塊,簡化虛擬網絡功能的開發流程,虛擬網絡工作組實現了新的虛擬網絡架構Cable。
背景簡介
目前公司的虛擬網絡架構有如下不足:1 物理機、虛機和容器網絡分開管理,無法達到直接互聯互通。2 Neutron agent里的DHCP、metadata采用集中式服務,健壯性不足。3 vxlan實現時需要外部路由器的支持,較為復雜。
新的網絡架構需要滿足統一管理物理機、虛機和容器網絡,實現直接互聯互通;簡化Neutron agent,分布式架構實現DHCP、metadata等功能;在虛擬網絡層面實現vxlan;提供流量鏡像等新功能。
方案實現
Cable整體框架圖
為了滿足上訴需求,Cable架構實現了如下兩個關鍵點
1 虛擬數據平面
虛擬數據平面不再基于OVS,而是采用功能更為豐富虛擬路由器vrouter.ko。vrouter.ko是Juniper的虛擬網絡架構OpenContrail中的開源數據模塊。相比于OVS的簡單數據包轉發,vrouter.ko支持虛擬網絡路由、vxlan、流表配置安全組、流表配置nat/snat、流量鏡像等功能。豐富的數據平面功能,簡化了網絡功能模塊的開發難度。
2 自研管理平面
重新自研開發管理平面。管理平面統一管理OpenStack和Kubernetes網絡模塊;采用Kubernetes里的watch方式,主動監控平臺資源變化情況,并執行相關操作;分布式實現DHCP;用vrouter.ko中的flow功能實現nat、安全組等。
Cable工作流程
當用戶請求到達Neutron Server后,Contrail Neutron Plugin將請求轉發至Cable的控制節點(Control Node)。控制節點的proxy轉換請求發送至API,API將接收到的請求發送至相應模塊,其中controller負責具體的計算和分配工作,IPAM模塊負責網絡地址的管理。每臺計算節點部署了Cable agent,通過Rest API監聽Control Node的資源,如監聽到資源變化,則調用vrouter.ko執行相應請求(添加/刪除/修改網絡信息)。
與Openstack兼容
Cable需要考慮如何與現有的虛擬網絡結構兼容,使得Neutron能夠平滑過渡到新的架構上。所以在保持Neutron原有接口不變的基礎上,將Neutron的db替換為etcd,并將DHCP-agent,metadata-agent,l3-agent替換為統一的cable-agent。將Neutron用Cable替代后,OpenStack的相關命令行和Restful API都沒有變化,實現無縫切換,方便運維管理。
Cable代替Neutron后架構圖
總結
新的虛擬網絡架構,兼容了不同網絡平面,簡化了網絡功能模塊,使得網絡更為健壯。目前Cable的整體架構已經基本開發完成,實現了DHCP、metadata和VLAN架構網絡,后續將實現安全組、VXLAN等更多功能,并實現自動化部署,完善監控功能。
由360云平臺團隊打造的技術分享公眾號,內容涉及數據庫、大數據、微服務、容器、AIOps、IoT等眾多技術領域,通過夯實的技術積累和豐富的一線實戰經驗,為你帶來最有料的技術分享
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。