這些天我聽到很多關於跨雲提供商運行聯合應用程序的目標。 我們想要構建這些多雲應用程序的原因有很多,包括:
- 為應用程序組件優化底層雲資源。 例如,應用程序的 CPU 密集型部分可以在雲服務的一部分上運行,以最低的使用成本提供最快的處理。
- 為了獲得最終的彈性,考慮到中斷通常不會跨越雲提供商。 因此,我們將風險分散到多個供應商身上。
- 以免被鎖定。 現在我們可以把雞蛋放在許多不同的籃子裡,重點放在更高級別的抽象平台上,而不是公共雲提供商的圍牆花園。
如何運行聯合應用程序
儘管有很多方法可以進行應用程序的聯合部署,但讓我們關注最流行的:Kubernetes。 您通常會設置一個跨越多個雲提供商的 Kubernetes 容器集群。 這創造了幾個選擇。
您可以使用 Kubernetes Federation 將不同雲中的多個 Kubernetes 集群作為單個邏輯集群進行管理。 這種方法需要配置每個特定於雲的 Kubernetes 集群並將其連接到聯合控制平面。 控制平面旨在管理聯合集群並提供對公共接口的訪問。
一些雲提供商提供託管 Kubernetes 服務,例如 Amazon Elastic Kubernetes Service (EKS)、Google Kubernetes Engine (GKE) 或 Azure Kubernetes Service (AKS)。 您在每個雲提供商中配置 Kubernetes 集群並在它們之間建立連接。 您可以在本地運行這些,但這通常不是最便宜和最簡單的途徑。
還建議探索跨雲 Kubernetes 解決方案(如 Rancher),它允許您從統一界面跨不同雲提供商管理集群。 當然,還有其他同樣可行的方法來實現這一目標; 牧場主只是其中之一。
聯合部署是個好主意嗎?
這不是一個問題 如果 你能行的。 你可以。 更好的問題是 應該 你來做? 我們介紹了好處,現在讓我們看看一些潛在的缺點。
複雜性和增加的管理開銷。 跨多個雲提供商部署應用程序會在網絡、安全、數據管理和部署策略方面帶來複雜性。 設計、實施和維護多雲容器編排環境需要專業知識和技能。 這種複雜性會增加管理開銷和運營成本。
依賴於特定於雲提供商的功能。 Kubernetes 和其他容器編排平台力求可移植性和抽象性,儘管一些高級功能和集成可能是特定雲提供商所獨有的。 如果您的應用程序嚴重依賴特定於提供商的功能,它可能會限制其在多個雲上平穩運行的能力。
有限的成本優化。 儘管多雲部署具有優化成本的潛力,但實現大量成本節約可能很困難。 定價模型、實例類型和折扣結構因不同的雲提供商而異。 跨多個雲優化成本需要仔細監控、管理和規劃,這會增加複雜性和開銷。
部署不一致和平台差異。 儘管努力確保一致性,但不同雲提供商的容器編排平台的行為、特性或性能可能會有所不同。 使用多個雲可能導致部署不一致和不可預測的結果,這可能需要額外注意識別和解決。
具體申請要求。 並非所有應用程序都受益於跨公共雲運行。 某些應用程序可能具有嚴格的數據主權要求、對性能敏感的工作負載,或者依賴於不易跨多個雲複製的專用雲服務。 在這種情況下,私有數據中心或單一云提供商可能是更合適的選擇。 我沒有看到很多這樣的東西出現,因為大多數雲架構師和開發人員都沒有構建聯合多雲應用程序的經驗。 此外,很少或沒有最佳實踐。
即使我們克服了這些障礙,仍然需要考慮許多權衡取捨。 在開始使用 Kubernetes 和容器構建跨雲聯合應用程序之前,必須徹底評估所有必要因素,例如安全協議、性能基準和部署策略。 通過花時間分析這些關鍵方面,您可以確保成功且高效地實施您的應用程序——這看起來確實很有趣。
版權所有 © 2023 IDG Communications, Inc.