使用 KubeSlice 簡化混合/多集群、多云 Kubernetes 部署
多云或混合策略使企業可以自由地使用最好的云原生服務。每個云提供商都有獨特的工作負載價值主張供企業考慮。例如,Oracle Cloud 除了計算功能之外,還帶來了一流的數據庫管理功能、分析生態系統以及其他云原生產品。因此,云提供商提供的多樣化價值支柱使多云成為對企業有吸引力的選擇。然而,簡化跨集群部署和連接工作負載的能力仍然是一個巨大的挑戰。我們可以借助 Avesha 的 KubeSlice 與托管的 Kubernetes 云基礎設施合作,企業將能夠解決其多云挑戰。
KubeSlice(https://kubeslice.io/) 通過在多個集群之間創建虛擬集群,幫助加速應用程序的速度,消除了網絡布局、多租戶和跨集群的微服務可達性所帶來的障礙。
Kubernetes 的擴散
在混合/多云部署的背景下,值得注意的是,容器化應用程序架構的采用已經隨著 Kubernetes 及其靈活的平臺發生了深刻的變化。Kubernetes 已成為臨時容器化工作負載編排的事實上的標準。企業環境中微服務的激增導致了 Kubernetes 生態系統的發展。
挑戰
大規模部署和有效管理 Kubernetes 需要強大的設計流程和嚴格的管理紀律。企業面臨著基于工作負載類型的決策:高度事務性、以數據為中心或特定于位置。此外,工作負載分配需要考慮延遲、彈性、合規性和成本等因素。
此外,微服務的復雜性使得互連成為現代應用程序架構的焦點。只要您將所有微服務部署在單個集群中,并且維護集群中運行的所有服務之間的信任,Kubernetes 就可以很好地處理此類復雜性。Kubernetes 默認將 CPU、Memory、StorageClass、PersistentVolume 等各種資源作為集群中的共享對象。
這就是事情變得復雜的地方。多個團隊在同一個集群中部署多個應用程序會導致共享資源的痛苦編排,其中包括安全問題和潛在的資源爭奪。Kubernetes 有一個邏輯上的命名空間,可以為應用程序提供隔離。但同樣管理和分配團隊擁有多個應用程序的命名空間資源會帶來非常大的運維挑戰。Kubernetes 本身并沒有將多租戶視為用戶和資源。
成熟的部署——挑戰不斷增加
隨著組織在運行 Kubernetes 方面達到成熟,他們會擴展其生態系統到多集群部署。這些部署托管在數據中心或分布在數據中心以及超大規模企業的云中。企業選擇部署多集群環境的一些原因是團隊邊界、延遲敏感性(應用程序需要更接近客戶)、地理彈性和數據管轄權(涉及數據無法跨越地理邊界的國家/地區的用戶數據限制的政策等)。隨著跨集群的應用程序部署不斷增加,這些應用程序越來越需要訪問不同集群中的其他應用程序。
當平臺團隊面臨為應用程序開發人員提供基礎設施時,他們會遇到繁瑣的運維管理挑戰:
(1)在多集群部署中擴展命名空間一致性的構建,同時保持租戶性質。
(2)對集群資源進行管理。
(3)防止環境配置漂移而導致集群配置問題。
Kubernetes 網絡——終極挑戰
Kubernetes 網絡絕非易事,雖然我們習慣于在需要邊界和控制的地方定義域和防火墻,但在 Kubernetes 中映射這些域和防火墻具有挑戰性。是的,您需要命名空間之外的額外靈活性。必須連接多個集群,此外,跨云分配工作負載需要 NetOps 團隊進行認真的規劃。
KubeSlice - 高效的混合/多云集群連接和管理解決方案
在企業世界中,管理大規模應用和基礎架構可能是一項艱巨的任務。有了 Kubernetes,編排應用變得更簡單了,但隨著從單個集群擴展到多集群部署,編排和擴展基于微服務的應用變得更加困難。作為基于 Kubernetes 的應用領域的領先創新者,Avesha 開發了突破性的專利產品 KubeSlice 和 Smart Scaler,使組織能夠高效、經濟地管理和擴展其應用。
KubeSlice 通過創建一個名為 Slice 的 Kubernetes operator 來提供對運行大規模多集群應用程序所面臨復雜挑戰的簡化解決方案。該operator在一系列集群上創建一個虛擬集群,作為邏輯應用邊界,并實現Pod和Service之間無縫通信。Slice跨越地理邊界,在任何集群、云端、邊緣或K8s分布上都可以部署應用。
此外,KubeSlice 還通過東/西路徑提供符合 NIST 標準的 VPN 隧道以實現安全低延遲的跨集群網絡連接。Slice 可作為多個云提供商間以及多個云提供商內部共享安全域。通過用戶友好特性,在每個虛擬集群中提供資源優化、命名空間隔離、RBAC管理和節點親和力等功能,KubeSlice Manager UI 簡化了對一系列集群的管理。組織可以輕松地管理和擴展其應用,并優先考慮安全性。
隨著企業將應用架構擴展到位于數據中心或云服務提供商區域的多個集群,或跨越多個云服務提供商,Kubernetes集群需要具備完全整合連接性以及跨集群傳播命名空間的能力。
無論物理位置如何,KubeSlice都能在單個集群或一組集群中創建多個邏輯切片。現有的簇內通信仍然局限于利用每個Pod的CNI接口進行本地通信。通過創建覆蓋網絡來實現簇間通信,KubeSlice在不同簇之間實現了網絡流量隔離。
為此,KubeSlice向Pod添加第二個接口,使得本地流量保持在CNI接口上,并且發送到外部簇的流量通過覆蓋網絡路由到目標Pod上,從而使得KubeSlice與CNI無關。
同時,KubeSlice解決了云服務提供商、數據中心和邊緣位置之間重疊IP地址的復雜問題。覆蓋網絡配置了一個非重疊的RFC1918私有網絡CIDR地址空間。由于KubeSlice創建了網絡隔離,它還負責分配子網,根據分配給具有簇間可達性的Pod數量進行配置。此外,在同一集群或集群組中創建的多個切片可以配置相同的RFC1918地址,進一步簡化IP地址管理。
KubeSlice提供服務,極大地增加了平臺和產品團隊在多集群環境中實現應用程序統一性的速度。KubeSlice 為其中的 pod 帶來了 3 種功能,包括:Kubernetes 服務、網絡服務以及多租戶和隔離。
Kubernetes 服務:KubeSlice 通過管理 Kubernetes 對象、命名空間和 RBAC 規則來管理命名空間管理和應用程序隔離,以提高運維效率。KubeSlice 可以對一組環境、團隊或應用程序進行集群分片或“切片”,這些環境、團隊或應用程序希望能夠合理隔離,但共享公共計算資源和 Kubernetes 控制平面。
網絡服務:Kubernetes 集群需要能夠將連接和 Pod 到 Pod 通信與跨集群的命名空間傳播完全集成?,F有的集群內通信利用 CNI 接口保留在集群本地。本機 KubeSlice 配置允許通過創建用于集群間通信的覆蓋網絡來隔離集群之間的網絡流量。KubeSlice 通過向 Pod 添加第二個接口來實現此目的,允許本地流量保留在 CNI 接口上,并且發往外部集群的流量通過覆蓋網絡路由到其目標 Pod,從而使 KubeSlice CNI 變得不可知。
KubeSlice 保留了 Kubernetes 的第一原則,即通過創建 Slices 來實現對集群中任何 Pod 的通信能力,從而實現無縫的 Pod 到 Pod 通信。KubeSlice Slice 互聯解決了云提供商、數據中心和邊緣位置之間 IP 地址重疊的復雜問題。
多租戶和隔離:KubeSlice 允許在單個集群或一組集群中創建多個邏輯切片,以解決從網絡到應用程序域的整個過程中的真正隔離。
架構
KubeSlice 為需要在多個集群之間提供安全且高度可用的連接的應用程序提供網絡服務。KubeSlice 創建一個平面覆蓋網絡來連接集群。覆蓋網絡可以描述為一個應用程序切片,它在多個集群中運行的應用程序的 Pod 之間提供連接切片。它也可以被描述為跨集群的特定于應用程序的 VPC。Pod 可以連接到切片覆蓋網絡,并跨集群邊界無縫地相互通信。
通過創建加密的 VPN 隧道來保護集群之間的連接,該隧道為集群間流量提供安全通道。
KubeSlice 還可用于實現跨集群的服務發現和可達性。集群中運行的 Kubernetes 服務可以通過分片覆蓋網絡導出,以便其他集群中運行的 pod 發現并訪問它。
KubeSlice 架構由多個組件組成,這些組件相互交互以管理切片覆蓋網絡的生命周期。下圖顯示了 KubeSlice 的主要組件以及它們之間的連接。
控制器集群包含 KubeSlice 控制器,用于管理用戶配置并協調多個工作集群之間切片覆蓋網絡的創建。它定義并擁有許多 CRD,用于存儲集群中的配置和操作信息。CRD 還用于控制器集群和工作集群之間的交互。工作集群連接到控制器集群的 Kubernetes APIServer 以獲取存儲在自定義資源對象中的配置。
工作集群的主要組件是切片控制器。它與控制器集群交互,并為工作集群上的切片覆蓋網絡設置所需的基礎設施。工作集群還包含一個名為 KubeSlice DNS 的 DNS 服務器,用于集群間服務發現。用戶還可以為東西向 (E-W) 流量創建帶有入口和出口網關的切片。Slice Operator 提供網關并設置路由規則,以在應用程序 Pod 和網關 Pod 之間匯集流量。
測試
Avesha 在沙盒環境中提供了4個小時的 KubeSlice免費使用。通過在 https://community.aveshalabs.io/ 注冊,即可獲得對該產品的實際體驗。感興趣的可以直接注冊體驗。
注冊后收到的響應電子郵件會包含訪問沙盒環境中的KubeSlice的詳細說明。使用共享的憑據,運行 kubeslice-cli install --profile=full-demo 命令可以配置完整的環境。此設置會提供三個 kind 集群。我們可以使用該配置來探索和學習 KubeSlice,無需安裝任何內容。