這篇文章已超過一年。較舊的文章可能包含過時的內容。請檢查頁面中的資訊自發布以來是否已變得不正確。

使用策略式網路擴展 Kubernetes 部署

雖然 Kubernetes 1.0 版本發布至今才短短十八個月,但我們已見證 Kubernetes 崛起成為部署分散式應用程式的領先容器編排平台。其中一個最大的原因是在它周圍發展蓬勃的開源社群。眾多 Kubernetes 貢獻者來自不同的背景,這意味著我們和使用者社群都確信我們正在投資一個開放平台。Google(Container Engine)、Red Hat(OpenShift)和 CoreOS(Tectonic)等公司正在開發基於 Kubernetes 的自有商業產品。這是一件好事,因為它將帶來更多的標準化,並為使用者提供更多選擇。

Kubernetes 應用程式的網路需求

對於在 Kubernetes 上部署應用程式的公司而言,最大的問題之一是如何大規模部署和編排容器。他們意識到,包括網路和儲存在內的底層基礎架構需要支援分散式應用程式。軟體定義網路 (SDN) 非常適合此類應用程式,因為網路基礎架構的彈性和敏捷性可以與應用程式本身相匹配。此類應用程式的網路需求包括:

  • 網路自動化
  • 分散式負載平衡與服務發現
  • 具有細緻化策略的分散式安全性
  • QoS 策略
  • 可擴展的即時監控
  • 服務分散於容器、VM 和裸機伺服器的混合應用程式環境
  • 服務插入(例如,防火牆)
  • 對私有雲和公有雲部署的支援

Kubernetes 網路功能

Kubernetes 提供透過 API 暴露的核心平台服務集。該平台可以透過擴充 API、外掛程式和標籤以多種方式進行擴充。這使得可以為 Kubernetes 開發各種整合和工具。Kubernetes 認識到每個部署中的網路都將是獨一無二的。Kubernetes 沒有嘗試使核心系統處理所有這些用例,而是選擇使網路可插拔。

透過 Nuage Networks,我們提供可擴展的基於策略的 SDN 平台。該平台由網路策略引擎管理,該引擎抽象化了與配置系統相關的複雜性。有一個單獨的 SDN 控制器,它帶有非常豐富的路由功能集,並且設計為可水平擴展。Nuage 使用開源 Open vSwitch (OVS) 作為資料平面,並在 OVS 使用者空間中進行了一些增強。就像 Kubernetes 一樣,Nuage 也將開放性作為其平台的核心原則。Nuage 提供開放 API,允許使用者編排其網路並整合網路服務,例如防火牆、負載平衡器、IPAM 工具等。Nuage 在各種雲平台(如 OpenStack 和 VMware)以及容器平台(如 Kubernetes 和其他平台)中都受到支援。

Nuage 平台實作了一個 Kubernetes 網路外掛程式,該外掛程式建立 VXLAN 覆疊網路,以在 Kubernetes Pod 和非 Kubernetes 環境(VM 和裸機伺服器)之間提供無縫的基於策略的網路連線。每個 Pod 都從屬於 命名空間 的網路中獲得一個 IP 位址,並且不與 Kubernetes 節點綁定。

由於雲端應用程式是使用微服務建構的,因此控制這些微服務之間的流量能力是一項基本要求。重要的是要指出,這些網路策略也需要控制往返外部網路和服務的流量。Nuage 的策略抽象模型可以輕鬆地為應用程式宣告細緻的入口/出口策略。Kubernetes 具有使用 Kubernetes 擴充 API 實作的 beta 版 網路策略 API。Nuage 實作此網路策略 API 以解決各種策略用例,例如:

  • Kubernetes 命名空間隔離
  • 跨命名空間策略
  • Pod 群組(策略群組)之間的策略,適用於相同或不同命名空間中的 Pod
  • Kubernetes Pod/命名空間與外部網路/服務之間的策略

使用者需要考慮的一個關鍵問題是策略實作的可擴展性。某些網路設定需要建立存取控制列表 (ACL) 條目,告知 Pod 它們如何相互交互。在大多數情況下,這最終會導致 ACL 條目呈 n 平方堆積。Nuage 平台避免了這個問題,並且可以快速分配適用於整個 Pod 群組的策略。Nuage 平台使用基於 OVS 的完全分散式有狀態防火牆來實作這些策略。

能夠監控 Kubernetes Pod 之間流動的流量對於開發和運營團隊都非常有用。Nuage 平台的即時分析引擎為 Kubernetes 應用程式實現了可見性和安全性監控。使用者可以獲得 Pod 群組之間流量流的可視化表示,從而輕鬆查看網路策略如何生效。使用者還可以獲得豐富的流量和策略統計資訊。此外,使用者可以設定基於策略事件閾值觸發的警報。

結論

即使我們在一年前就開始進行與 Kubernetes 的整合工作,但感覺我們才剛剛開始。我們一直認為這是一個真正開放的社群,我們希望成為其中的重要組成部分。您可以在我們的 GitHub 頁面上找到更多關於我們 Kubernetes 整合的資訊。