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