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

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

MORE 更多Tungsten Fabric解析文章
第一篇:TF主要特點和用例
第二篇:TF怎麼運作
第三篇:詳解vRouter體系結構
第四篇:TF的服務鏈
第五篇:vRouter的部署選項
第六篇:TF如何收集、分析、部署?
在這裏插入圖片描述
關注微信:TF中文社區
郵箱:[email protected]
在這裏插入圖片描述

發佈了27 篇原創文章 · 獲贊 1 · 訪問量 1624
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章