使用基於策略的網路擴充套件Kubernetes Deployments
編者注:今天的文章是由Nuage Networks 的產品管理總監Harmeet Sahni書寫,內容是關於他們在Kubernetes貢獻和Policy-Based Networking的見解。
儘管距離Kubernetes 1.0釋出僅僅只有18個月,我們已經看到Kubernetes領先容器業務流程平臺部署的分散式應用程式。周邊充滿活力的開源社群蓬勃發展是其最大原因之一。大量的Kubernetes貢獻者來自不同的背景意味著我們和使用者社群確信給一個開放的平臺投資。像谷歌這樣的公司(容器引擎),紅帽子(OpenShift),和CoreOS(Tectonic)正在開發自己的基於Kubernetes的商業產品。因為它會帶來更多的標準化,並提供給使用者,所以這是一件好事。
K8s應用網路系統要求
把應用程式部署在Kubernetes的公司,面臨的一個最大問題是如何部署和合理安排大規模的容器。他們意識到底層基礎設施,包括網路和儲存,需要支援分散式應用程式。由於網路基礎設施的靈活性和敏捷性可以匹配應用程式本身,軟體定義網路(SDN)是一個非常適合這樣場景的應用。這些應用程式的網路要求包括:
- 網路自動化
- 分散式負載平衡和服務發現
- 分散式安全細粒度的策略
- QoS策略
- 可擴充套件實時監控
- 混合應用環境與服務橫跨容器,VMS和裸機伺服器
- 服務插入(如防火牆)
- 支援私有和公共雲部署
K8s網路系統
Kubernetes通過APIs提供了一組核心平臺服務。該平臺可以通過擴充套件API,外掛和標籤幾個方面實現可擴充套件性。這使得各種各樣的基於Kubernetes整合方法和工具被開發出來,。Kubernetes承認每個部署的網路將是獨一無二的。Kubernetes選擇了做網路系統外掛而不是試圖使核心系統來處理所有這些用例。
基於Nuage Networks提供基於SDN平臺的可擴充套件策略。該平臺由一個網路策略引擎管理,抽象出與配置系統相關的複雜性。平臺擁有一個帶有非常豐富的路由功能和實現水平擴充套件的獨立的SDN控制器。Nuage採用開源的Open vSwitch(OVS)與使用者空間的一些增強功能的OVS資料層。就像Kubernetes,Nuage一直信奉開放作為其平臺的核心宗旨。Nuage提供開放的API,允許使用者實現他們的網路和整合網路服務如防火牆、負載均衡器、IPAM工具等。Nuage和Kubernetes以及其他平臺一樣是支援多種雲平臺OpenStack,VMware和容器的平臺。
Nuage平臺實現了能夠生成VXLAN封裝的Kubernates網路外掛,提供Kubernates Pods和非Kubernates Pods(虛擬機器伺服器和裸機伺服器)之間基於策略的無縫網路連結。每個Pod都有一個特定名稱空間的網路IP,並且沒有在 kubernetes節點上繫結。
雲應用的建立使用了微服務,控制微服務之間通訊的是基礎要求。必須指出,這些網路策略需要控制即將到來的外部網路和服務的通訊也是至關重要的。Nuage策略的抽象模使得型應用程式宣告細粒度入口/出口策略更加容易。Kubernates使用Kubernates的擴充套件API實現了beta版的網路策略。Nuage實現了這一網路策略API解決各種各樣的策略用例如下:
- Kubernetes 名稱空間隔離
- 跨名稱空間策略
- 相同或者不同名稱空間的Pods的分組策略
- Kubernates Pods/名稱空間和外部的網路/服務之間的策略
策略是實現的可擴充套件性是使用者考慮的一個關鍵問題。一些網路設定需要建立訪問控制列表(ACL)條目告訴Pods它們如何相互作用。在大多數情況下,這最終導致了一個不規則堆積的ACL條目。Nuage平臺可以避免這個問題,快速分配策略應用於整個Pods組。Nuage平臺實現這些策略使用基於OVS的完全分散式防火牆。
監控Kubernetes Pods之間的通訊流的功能對於開發和運營團隊非常有用。Nuage平臺的實時分析引擎能夠視覺化和安全的監控Kubernetes應用。使用者可以得到的Pods之間的流量視覺化展示,使使用者很容易看到網路策略是如何生效。使用者還可以得到豐富的流量和策略統計集。此外,使用者可以根據策略事件閾值設定要觸發的警報。
總結
雖然在一年前我們開始從事Kubernetes一體化工作,但是感覺我們才剛剛開始。我們一直認為這是一個真正開放的社群,我們希望成為其中的一個組成部分。在GitHub上,你可以找到關於我們的Kubernetes整合的更多內容。