云vs本地:哪個更適合您的Kubernetes集群?
了解 Kubernetes 托管選項的優勢和挑戰,以便做出明智的決策,選擇適合您的環境。
譯自Cloud vs. On-Prem: Which Is Better for Your Kubernetes Cluster?,作者 Siddhant Kishty。
部署應用程序工作負載時需要考慮許多因素。許多組織使用 Kubernetes 來部署和容器化其工作負載,因為它提供了增強的可擴展性、自我修復和支持高可用性。但是,需要做出一個關鍵的決定,即他們希望如何托管其Kubernetes 基礎設施:部署在云上還是使用本地基礎設施進行管理。
這兩種方案都有其優點和缺點,可能使其中一種更適合特定的用例。在本文中,我們將探討云和本地部署、它們的優缺點以及選擇最適合不同用例的方法的技巧。
什么是云基礎設施?
云指的是多個設備,每個設備都有自己的系統資源,例如 CPU、內存和存儲,通過全球網絡連接。云提供商(例如,AWS、Azure 或GCP)提供物理設備并管理物理基礎設施,因此您可以專注于部署和管理應用程序,而不是管理硬件。云服務通常按需提供——即,您只需支付使用的內容和數量——并且設計為高度可擴展且能夠承受停機。
使用云服務可以減少開發人員的操作開銷:在 Kubernetes 上部署應用程序時,云提供商在為 Kubernetes 集群配置和管理基礎設施方面發揮著巨大作用。他們還處理 Kubernetes 維護中的操作挑戰,例如集群升級、備份和恢復、災難管理和擴展。
即使您使用kOps或類似工具自行管理集群,您仍然可以通過使用虛擬機 (VM)(例如 AWS 的 EC2 實例)來利用云服務。托管的 Kubernetes 集群(例如 EKS、AKS 和 GKE)廣泛用于部署生產應用程序,因為它們與云提供商的生態系統很好地集成,并且團隊無需維護集群基礎設施。
什么是本地基礎設施?
本地是指您在組織內部獲取物理基礎設施、設置它并處理維護活動。組織擁有所有服務器和基礎設施組件。自己設置基礎設施比從云提供商處配置基礎設施需要更多時間,并且必須定期維護,任務包括升級基礎設施、執行定期安全檢查和安裝安全補丁。
在本地部署 Kubernetes 集群的過程比使用云提供商復雜得多。您必須首先使用一級虛擬機管理程序(例如VMwarevSphere 或 Proxmox)虛擬化整個基礎設施。然后,您需要手動創建所有必需的 VM 作為 Kubernetes 節點,生成SSL 證書,處理機器 DNS 并設置 Kubernetes 集群。如果您無法獲得支持,則設置自動縮放機制會帶來額外的挑戰。在設置初始集群后,您仍然必須執行定期維護活動,例如證書輪換、集群升級和節點升級。
如果您想跨多個可用區分發 Kubernetes 集群,則需要找到一個數據中心,在每個數據中心獲取和設置物理基礎設施,并處理網絡以實現無縫節點通信。相比之下,當嘗試使用云提供商獲得相同結果時,您必須指定希望在其中配置節點的區域。
使用云提供商托管應用程序工作負載和完全在本地部署基礎設施存在顯著差異。
部署
這兩種方法的基礎設施部署和管理方式存在重要差異。
- 云:盡管存在不同類型的云服務提供商,包括公有云、私有云和混合云,但應用程序和服務的部署方式在很大程度上是相同的。物理基礎設施由云服務提供商擁有和管理。作為云用戶,你需要配置合適的基礎設施,例如 Kubernetes 集群,并部署你的應用程序。部署的應用程序存在于云服務提供商的基礎設施上。
- 本地:在本地部署的基礎設施中,你首先需要正確配置基礎設施——安裝合適的操作系統、引導 Kubernetes 集群并配置集群組件(例如,網絡、存儲)
成本
- 云: 在云上部署應用程序時,您只需為正在使用的資源付費。例如,如果您從云提供商處配置 10 臺虛擬機,則只需支付這些虛擬機的運營成本。
- 本地: 在本地部署應用程序時,您需要預先采購基礎設施并支付硬件成本,然后隨著時間的推移支付基礎設施管理、功耗和物理空間的費用。成本可能因工作負載的規模而異。對于本地部署,您需要一次性投入大量資金,以及基礎設施維護的經常性成本;云提供商則有可優化的經常性成本。
控制
- 云: 在云中運行應用程序時,由于共享責任模型,控制權在用戶和云提供商之間共享:云提供商控制整個基礎設施,而用戶控制其應用程序及其部署配置。云提供商還對許多底層基礎設施進行了抽象,這限制了您的控制級別。此外,某些要求可能會導致云供應商鎖定。
- 本地: 本地基礎設施使您可以完全控制應用程序的各個方面,包括硬件資源以及數據存儲和移動。這種完全控制使您可以確保數據不會離開您的場所,以任何您喜歡的方式自定義基礎設施,并優化硬件和軟件以滿足您用例的安全或其他要求。本地環境和云環境之間的控制級別差異很大,并影響組織管理其基礎設施、應用程序和數據的方式。對于某些用例,更高的控制可能至關重要。
安全
- 云: 安全性仍然是云上部署工作負載的主要關注點之一。云提供商負責維護基礎設施安全。云提供商確實會發生數據泄露,導致憑據泄露、知識產權丟失等。使用諸如 Trivy 之類的容器鏡像安全掃描工具可以幫助保護應用程序的安全性。
- 本地: 政府、銀行和醫療保健等行業通常需要本地環境提供的較高安全級別、隱私和控制級別。嚴格的合規法規和數據駐留法使保留基礎設施的完全所有權對于保護敏感信息至關重要。雖然云提供商提供強大的安全性,但共享責任模型會帶來某些組織無法接受的風險。盡管成本更高且復雜性更高,但對于數據泄露或合規性失敗可能造成嚴重后果的行業而言,本地設置仍然是首選。安全性可能是選擇本地部署還是云部署的決定性因素。
維護
- 云: 在云環境中,提供商管理底層基礎設施,包括硬件更新、補丁和網絡配置。組織負責維護其應用程序、數據和配置,但消除了物理硬件和基礎設施維護的操作負擔。這使團隊能夠更加專注于創新,而不是例行維護。
- 本地: 本地環境要求組織處理維護的各個方面。這提供了完全控制,但增加了大量運營開銷,需要熟練的人員和對工具和資源的持續投資。初始基礎設施設置后,仍需執行定期維護任務,包括軟件和硬件升級,以及更換故障設備。無論您使用的是云基礎設施還是本地基礎設施,有效的維護對于確保正常運行時間、安全性和性能都至關重要。
合規性
合規性確保組織遵守管理其運營的法律、法規和標準,尤其是在數據隱私、財務責任和行業特定要求等領域。這對于保護敏感信息、避免法律處罰以及維護與客戶和利益相關者的信任至關重要。合規性通過促進透明度和問責制,幫助企業維護其聲譽和信譽。在數據泄露和隱私問題日益增多的時代,強大的合規框架對于降低風險和展示道德實踐至關重要。
- 云: 在云環境中,合規責任由提供商和客戶共同承擔。提供商通常會獲得其基礎設施的認證(例如,SOC 2、ISO 27001),但組織必須確保其數據處理、配置和應用程序符合法規標準。這種共享責任需要仔細選擇供應商并進行持續審計以保持合規性。
- 本地: 在本地環境中,組織對滿足合規性要求擁有完全的控制權和責任。這包括管理數據安全、基礎設施和訪問控制以遵守相關法規。雖然這種級別的控制提供了靈活性,但也需要大量的專業知識和資源來確保持續合規性。
混合云呢?
混合云架構結合了本地基礎設施(或私有云)和公共云服務的優勢。在此模型中,工作負載和數據可以在本地環境和云平臺之間無縫移動,提供靈活性和可擴展性以及控制能力。組織可以使用混合云解決方案來平衡其運營需求,例如將敏感數據保留在本地,同時利用公共云的可擴展性來處理不太重要的工作負載或峰值需求。
混合云模型通常依賴于編排和統一管理工具來提供環境之間的無縫集成。容器化和Kubernetes等技術在實現這種互操作性方面發揮著重要作用,允許應用程序在本地和云基礎設施上一致運行。
混合云環境已廣泛應用于需要在靈活性和控制之間取得平衡的各個行業。例如:
- 金融和銀行: 敏感的客戶數據保存在本地數據中心,公共云用于分析和面向客戶的應用程序。
- 醫療保健: 將病歷存儲在本地,并利用云平臺進行遠程醫療和研究,可以提高對數據隱私法規的遵守程度。
- 零售: 使用混合云幫助零售商管理季節性需求高峰,在本地處理常規運營,并在銷售高峰期向云端擴展。
混合云也有利于企業從傳統系統過渡到現代云原生架構,因為它允許分階段實施,而不會中斷正在進行的運營。
管理工具和框架
在運行為生產設計的Kubernetes集群時,您需要使用強大的機制來管理整個集群。雖然kubectl有助于管理和與Kubernetes集群交互,但不建議將其用于管理生產集群:它不提供所有資源的整體可見性,需要復雜的命令來執行操作,并且在多個集群之間導航可能很繁瑣。
有一些工具可以幫助管理云和本地環境中的集群:雖然有些工具可以同時用于這兩種環境,但其他工具在其中一種環境中更強大。
云管理工具
以下是一些最有助于在云環境中操作、自動化和管理Kubernetes集群生命周期的工具。
- KEDA、HPA和Karpenter: Kubernetes事件驅動自動縮放器(KEDA)、水平Pod自動縮放器(HPA)和Karpenter等自動縮放工具在托管Kubernetes集群上使用時最為強大。在云上運行時,這些自動縮放器可以輕松地根據需要擴展基礎設施,而不會耗盡資源。
- OpenCost: 在云上運行Kubernetes集群時,很容易超支。OpenCost可以幫助您深入了解集群的整體支出,并且您可以設置自動縮放策略來幫助管理成本。
- Karmada: Karmada是一個開源工具,有助于更輕松地跨多個云管理Kubernetes集群。當您在不同的云提供商處托管多個Kubernetes集群時,它最有用。
- AWS CloudFormation: AWS CloudFormation允許您以聲明性、編碼的方式部署多個AWS特定資源——例如S3存儲桶、EC2實例等等。這對于在特定條件下自動配置Kubernetes集群的資源非常有用。雖然CloudFormation特定于AWS,但Azure、GCP和其他云提供商也提供類似的服務。
- Devtron和Rancher: 諸如Devtron或Rancher之類的集群管理工具可以幫助您大規模部署和管理復雜的應用程序,同時抽象出Kubernetes的復雜性。
本地管理工具
有多種工具可以幫助您在本地設置和管理Kubernetes集群。它們提供了巨大的價值,因為本地設置缺乏云提供商提供的集群管理功能。
- K3S和RKE2: K3S是一個輕量級的Kubernetes發行版,而RKE2則非常注重安全性。與使用Kubeadm或類似工具的傳統Kubernetes引導過程相比,這兩個工具都易于設置。
- Vault: Kubernetes密鑰未加密,并以Base64格式編碼。使用Vault之類的外部密鑰管理器可以防止密鑰和環境變量泄漏。
- Devtron的Kubernetes Dashboard:Devtron的Kubernetes Dashboard作為一個單一工具,幫助用戶從單一窗格管理多個Kubernetes集群。雖然它并非特定于本地環境,但它可以幫助操作員管理集群,提供對所有集群資源的可見性,部署和管理Helm圖表,并支持集群升級過程。它具有強大的基于角色的訪問控制(RBAC)支持,以限制團隊成員之間的訪問權限。
- Ceph: Ceph是一個分布式存儲系統,用于處理持久數據可靠性。它可以用來管理Kubernetes集群中的存儲驅動程序。Ceph擁有專用的容器存儲接口(CSI)驅動程序,這有助于使其與Kubernetes塊存儲設備兼容。
結論
在云、本地和混合環境之間進行選擇取決于組織獨特的可擴展性、成本、控制和合規性需求。云解決方案提供了無與倫比的靈活性和易于擴展性,而本地設置則為敏感工作負載提供了無與倫比的控制和安全性。另一方面,混合云通過結合兩者的優勢來取得平衡,使企業能夠針對特定用例優化其基礎設施。
Devtron可以通過簡化應用程序管理和集群管理來幫助簡化與Kubernetes相關的許多復雜性,無論它是在云中還是在本地托管。如果您正在尋找一個端到端的解決方案來管理您的Kubernetes集群,請查看Devtron的GitHub倉庫并試用它。
隨著技術的不斷發展,組織必須仔細評估其運營目標、合規性要求和預算限制,以確定正確的策略。無論是利用云的敏捷性、本地的控制性還是混合的通用性,關鍵在于將基礎設施與業務優先級相結合,以推動效率和創新。




























