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