OpenStack是虛擬機和容器的領先的開源編排系統。Tungsten Fabric提供了Neutron網絡服務的實現,並提供了許多附加功能。安全
在OpenStack中,用戶組被分配到「項目」,其中諸如VM和網絡之類的資源是私有的,而且其餘項目中的用戶沒法看到(除非特別啓用)。服務器
在vRouters中使用VRF且每一個網絡都有路由表,能夠直接在網絡層中實施項目隔離,由於只有到容許目的地的路由纔會分發到計算節點上的vRouters中的VRF,而且不會發生泛洪vRouter執行的代理服務。微信
網絡服務是Neutron,計算代理是Nova(OpenStack計算服務)。網絡
當二者都部署在OpenStack環境中時,Tungsten Fabric能夠在VM和Docker容器之間提供無縫網絡。架構
在下圖中,能夠看到OpenStack的Tungsten Fabric插件提供了從Neutron網絡API到Tungsten Fabric API調用的映射,後者在Tungsten Fabric控制器中執行。
負載均衡
Tungsten Fabric支持網絡和子網的策略,以及OpenStack網絡策略和安全組。能夠在OpenStack或Tungsten Fabric中建立這些實體,而且在兩個系統之間同步任何更改。ide
此外,Tungsten Fabric還支持OpenStack LBaaS v2 API。工具
可是,因爲Tungsten Fabric經過OpenStack提供了豐富的網絡功能超集,所以許多網絡功能僅經過Tungsten Fabric API或GUI提供。這些包括指定route target以實現與外部路由器的鏈接、服務鏈、配置BGP路由策略和應用程序策略。操作系統
當OpenStack使用Tungsten Fabric網絡時,徹底支持應用程序安全性。能夠在項目、網絡、主機、VM或接口級別應用Tungsten Fabric標記,並應用於標記對象中包含的全部實體。插件
此外,Tungsten Fabric還支持用於網絡和安全性的資源,可使用OpenStack Heat模板進行控制。
容器容許多個進程在同一操做系統內核上運行,但每一個進程均可以訪問本身的工具、庫和配置文件。
與每一個VM運行其本身的完整客戶機操做系統的虛擬機相比,容器須要更少的計算開銷。在容器中運行的應用程序一般啓動速度更快,而且比在VM中運行的相同應用程序執行得更好,這也是爲何人們愈來愈關注在數據中心和NFV中使用容器的緣由之一。
Docker是一個軟件層,它使容器能夠跨操做系統版本移植,而且Kubernetes做爲部署容器的典型接口,管理服務器上容器的建立和銷燬。
如上圖所示,Kubernetes管理容器組,它們共同執行某些功能,稱爲_pods. pod中的容器在同一服務器上運行並共享IP地址。
一組相同的pod(一般在不一樣的服務器上運行)造成services,而且必須將指向服務的網絡流量定向到服務中的特定pod。在Kubernetes網絡實現中,特定pod的選擇是由應用程序自己使用發送pod中的本機Kubernetes API來執行的。對於非本機應用程序,是由負載平衡代理使用中實現的虛擬IP地址,來執行發送服務器上的Linux iptables。
大多數應用程序都是非本機的,由於它們是在未考慮Kubernetes的狀況下開發的現有代碼的端口,所以使用了負載平衡代理。
Kubernetes環境中的標準網絡其實是扁平的,任何pod均可以與任何其餘pod進行通訊。若是目標pod的名稱或其IP地址是已知的,則不會阻止從一個命名空間(相似於_project _in OpenStack)中的pod到另外一個命名空間中的pod之間的通訊。
雖然此模型適用於屬於單個公司的超大規模數據中心,但它不適合數據中心在許多最終客戶之間共享的服務提供商,也不適合必須將不一樣組的流量彼此隔離的企業。
Tungsten Fabric虛擬網絡能夠集成在Kubernetes環境中,以與OpenStack相似的方式提供一系列多租戶網絡功能。
帶有Kubernetes的Tungsten Fabric 配置以下圖所示。
使用Kubernetes編排和Docker容器的Tungsten Fabric架構相似於OpenStack和KVM / QEMU,其vRouter在主機Linux OS中運行,幷包含帶有虛擬網絡轉發表的VRF。
pod中的全部容器共享一個具備單個IP地址的網絡堆棧(圖中的IP-1,IP-2),可是偵聽不一樣的TCP或UDP端口,而且每一個網絡堆棧的接口鏈接到vRouter的VRF。
一個名爲_kube-network-manager _listens的進程使用Kubernetes _k8s _API偵聽與網絡相關的消息,並將這些消息發送到Tungsten Fabric API。
在服務器上建立pod時,本地_kubelet _和vRouter代理之間經過Container Network Interface(CNI)進行通訊,以將新接口鏈接到正確的VRF。
服務中的每一個pod在虛擬網絡中分配惟一的IP地址,而且還爲服務中的全部pods分配浮動IP地址。服務地址用於將流量從其餘服務中的pod或外部客戶端或服務器發送到服務中。
當流量從pod發送到服務IP時,鏈接到該pod的vRouter將使用到服務IP地址的路由執行ECMP負載平衡,該服務IP地址將解析爲構成目標服務的各個pod的接口。
當流量須要從Kubernetes集羣外部發送到服務IP時,能夠將Tungsten Fabric配置爲建立一對(用於冗餘)_ha-proxy_負載均衡器,它能夠執行基於URL的路由到Kubernetes服務,最好使用浮動IP地址避免暴露集羣的內部IP地址。
這些外部可見的服務地址解析爲到服務Pod的ECMP負載平衡路由。
。
在Kubernetes集羣中使用Tungsten Fabric虛擬網絡時,不須要Kubernetes代理負載均衡。
提供外部訪問的其餘替代方法包括:使用與負載均衡器對象關聯的浮動IP地址,或使用與服務關聯的浮動IP地址。
在Kubernetes中建立或刪除服務和pod時,kube-network-manager進程會檢測k8s API中的相應事件,並使用Tungsten Fabric API根據爲Kubernetes羣集配置的網絡模式應用網絡策略。 各類選項總結在下表中。
Tungsten Fabric爲Kubernetes世界帶來了許多強大的網絡功能,與OpenStack的功能相同,包括:
VMware vCenter普遍用做虛擬化平臺,但須要手動配置網絡網關,以實現位於不一樣子網中的虛擬機與vCenter羣集外部目標之間的網絡鏈接。
能夠在現有vCenter環境中部署Tungsten Fabric虛擬網絡,以提供先前列出的全部網絡功能,同時保留用戶可能依賴的工做流,以使用vCenter GUI和API建立和管理虛擬機。
此外,還在vRealize Orchestrator和vRealize Automation中實現了對Tungsten Fabric的支持,以便Tungsten Fabric中的常見任務(如建立虛擬網絡和網絡策略)能夠包含在這些工具中實現的工做流中。
使用VMware vCenter的Tungsten Fabric架構以下圖所示。
虛擬網絡和策略能夠在Tungsten Fabric中直接建立,也能夠在vRO / vRA工做流程中使用TF任務建立。
當vCenter使用其GUI或vRO / vRA建立VM時,Tungsten Fabric的vCenter插件將在vCenter消息總線上看到相應的消息,這是Tungsten Fabric在服務器(將要建立VM的服務器)上配置vRouter的觸發器。
每一個VM的每一個接口都鏈接到一個端口組,該端口組對應於該接口所在的虛擬網絡。端口組具備與之關聯的VLAN,由Tungsten Fabric控制器使用vCenter中的「VLAN override」選項設置,而且端口組的全部VLAN都經過中繼端口組發送到vRouter。
Tungsten Fabric控制器將接口的VLAN映射到包含該子網的虛擬網絡的VRF上。剝離VLAN標記,並執行VRF中的路由查找。
如本文檔前面所述,經過Tungsten Fabric與vCenter的配合使用,用戶能夠訪問Tungsten Fabric提供的所有網絡和安全服務,包括零信任微分段,代理DHCP,DNS和DHCP,可避免網絡泛洪,服務鏈,幾乎無限的規模,以及與物理網絡的無縫互連。
###嵌套的Kubernetes與OpenStack或vCenter {#tf-nested-kubernetes}
假設已經經過某種方式預先配置了運行容器的KVM主機。
還有一種替代方法,是使用OpenStack或vCenter來配置容器運行的VM,並使用Tungsten Fabric管理OpenStack或vCenter建立的VM與Kubernetes建立的容器之間的虛擬網絡,以下圖所示。
編排器(OpenStack或vCenter),Kubernetes Master和Tungsten Fabric在一組服務器或VM中運行。
編排器配置爲使用Tungsten Fabric管理計算羣集,所以每臺服務器上都有vRouters。
能夠將虛擬機啓動並配置爲運行Kubelet和Tungsten Fabric的CNI插件。這些虛擬機可供Kubernetes主機運行,並經過Tungsten Fabric管理網絡。
因爲同一個Tungsten Fabric負責管理orchestrator和Kubernetes的網絡,所以能夠在VM之間,容器之間,以及VM和容器之間實現無縫聯網。
在嵌套場景中,Tungsten Fabric提供與前面所述相同的隔離級別,而且多個Kubernetes Masters能夠共存,而且運行Kubelet的多個VM能夠在同一主機上運行。 這容許提供多租戶Kubernetes容器服務。
MORE
更多Tungsten Fabric解析文章
第一篇:TF主要特色和用例
第二篇:TF怎麼運做
第三篇:詳解vRouter體系結構
第四篇:TF的服務鏈
第五篇:vRouter的部署選項
第六篇:TF如何收集、分析、部署?
關於Tungsten Fabric:
Tungsten Fabric項目是一個開源項目協議,它基於標準協議開發,而且提供網絡虛擬化和網絡安全所必需的全部組件。項目的組件包括:SDN控制器,虛擬路由器,分析引擎,北向API的發佈,硬件集成功能,雲編排軟件和普遍的REST API。
關於TF中文社區:
TF中文社區由中國的一羣關注和熱愛SDN的志願者自發發起,有技術老鳥,市場老炮,也有行業專家,資深用戶。將做爲鏈接社區與中國的橋樑,傳播資訊,提交問題,組織活動,聯合一切對多雲互聯網絡有興趣的力量,切實解決雲網絡建設過程當中遇到的問題。
關注微信:TF中文社區