Tungsten Fabric架構解析丨TF如何編排

TF中文社群發表於2019-12-31
Hi!這裡是Tungsten Fabric架構解析內容的 七篇,介紹TF如何為OpenStack、Kubernetes、VMware vCenter等各種編排器提供虛擬網路。
Tungsten Fabric架構解析系列文章,由TF中文社群為你呈現,旨在幫助初入TF社群的朋友答疑解惑。我們將系統介紹TF有哪些特點、如何運作、如何收集/分析/部署、如何編排、如何連線到物理網路等話題。

OpenStack和TF整合

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中建立這些實體,並且在兩個系統之間同步任何更改。

此外,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模板進行控制。

Kubernetes容器和TF整合

容器允許多個程式在同一作業系統核心上執行,但每個程式都可以訪問自己的工具、庫和配置檔案。

與每個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的功能相同,包括:

  • IP地址管理

  • DHCP

  • DNS

  • 負載均衡

  • 網路地址轉換(1:1浮動IP和N:1 SNAT)

  • 訪問控制列表

  • 基於應用程式的安全性

TF和vCenter整合{#tf-vcenter}

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容器服務。

更多Tungsten Fabric解析文章

第一篇: TF主要特點和用例

第二篇: TF怎麼運作

第三篇:詳解vRouter體系結構

第四篇: TF的服務鏈

第五篇: vRouter的部署選項

第六篇: TF如何收集、分析、部署?

關注微信:TF中文社群
郵箱:tfzw001@163.com


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69957171/viewspace-2671348/,如需轉載,請註明出處,否則將追究法律責任。

相關文章