據(jù)IDC稱,到2023年,將有超5億的應(yīng)用和服務(wù)以云原生的方式進(jìn)行開(kāi)發(fā)和部署,這一數(shù)字與過(guò)去40年以來(lái)人們開(kāi)發(fā)的應(yīng)用總數(shù)相當(dāng)。
云原生的加速發(fā)展為每個(gè)行業(yè)帶來(lái)新的競(jìng)爭(zhēng)需求,云原生和容器正在迅速轉(zhuǎn)變?yōu)閼?yīng)用程序開(kāi)發(fā)和底層云基礎(chǔ)設(shè)施服務(wù)的新藍(lán)圖。
但值得注意的是,據(jù)CNCF調(diào)查顯示,目前存儲(chǔ)系統(tǒng)依然是云原生場(chǎng)景使用和部署中面臨的最主要障礙之一。
云原生環(huán)境對(duì)存儲(chǔ)
帶來(lái)新挑戰(zhàn)
存儲(chǔ)系統(tǒng)一直以來(lái)都是基礎(chǔ)設(shè)施軟件中的核心之一。無(wú)論業(yè)務(wù)采用什么樣的運(yùn)行環(huán)境和架構(gòu),都離不開(kāi)存儲(chǔ)系統(tǒng)的支撐。
在過(guò)去的30年中,業(yè)務(wù)系統(tǒng)的運(yùn)行環(huán)境經(jīng)歷了巨大的變化,從單獨(dú)部署的物理機(jī),小規(guī)模部署的虛擬化環(huán)境,大規(guī)模部署的云環(huán)境,以及目前的云原生平臺(tái)。在這個(gè)變革的過(guò)程中,業(yè)務(wù)系統(tǒng)對(duì)平臺(tái)敏捷性的要求越來(lái)越高。
在物理機(jī)時(shí)代,運(yùn)維人員需要手動(dòng)配置存儲(chǔ)系統(tǒng)和部署業(yè)務(wù)系統(tǒng),業(yè)務(wù)上線以周為單位。而在云原生時(shí)代,每分鐘都可能發(fā)布新的應(yīng)用版本,每天都可能有大量的業(yè)務(wù)要上線。
這意味著,云原生時(shí)代的存儲(chǔ)系統(tǒng),除了要滿足性能、穩(wěn)定性、可靠性的要求以外,還要滿足業(yè)務(wù)系統(tǒng)對(duì)敏捷性的要求,能夠通過(guò)統(tǒng)一的編排系統(tǒng)配合業(yè)務(wù)上線,并且可以實(shí)現(xiàn)快速擴(kuò)容。
同時(shí),為了減輕運(yùn)維管理員的工作負(fù)擔(dān),存儲(chǔ)系統(tǒng)自身的自動(dòng)化運(yùn)維能力,也成為運(yùn)維團(tuán)隊(duì)關(guān)注的核心焦點(diǎn)。
盡管在云原生技術(shù)日益普及的今天,在Kubernetes上運(yùn)行無(wú)狀態(tài)應(yīng)用已經(jīng)非常成熟,平滑擴(kuò)展能力也很強(qiáng),但對(duì)于有狀態(tài)的應(yīng)用,數(shù)據(jù)需要持久化存儲(chǔ),還有很大提升的空間,面臨著很多挑戰(zhàn)。
據(jù)CNCF對(duì)于“在使用/部署容器過(guò)程中遇到的挑戰(zhàn)”的調(diào)查報(bào)告中顯示,云原生存儲(chǔ)遇到的挑戰(zhàn)表現(xiàn)在以下幾個(gè)方面:
易用性:存儲(chǔ)服務(wù)部署、運(yùn)維復(fù)雜,云原生化程度低,缺少與主流編排平臺(tái)整合
高性能:大量應(yīng)用IO訪問(wèn),IOPS需求高,低時(shí)延,性能成為應(yīng)用運(yùn)行效率瓶頸
高可用:云原生存儲(chǔ)已經(jīng)應(yīng)用到生產(chǎn)環(huán)境,需要高可靠/高可用,不能出現(xiàn)單點(diǎn)故障
敏捷性:PV快速創(chuàng)建、銷毀、平滑的擴(kuò)展/收縮,PV隨Pod遷移而快速遷移
云原生存儲(chǔ)應(yīng)具備哪些特點(diǎn)?
云原生存儲(chǔ)作為一種存儲(chǔ)系統(tǒng),可靠性、性能、高可用等特點(diǎn)都是必不可少的。除此之外,云原生環(huán)境對(duì)存儲(chǔ)系統(tǒng)提出了更高的要求。
面對(duì)諸多挑戰(zhàn)云原生存儲(chǔ)應(yīng)具備哪些特點(diǎn)呢?
盡量減少環(huán)境依賴
云原生存儲(chǔ)系統(tǒng)應(yīng)盡量不對(duì)軟硬件環(huán)境存在任何依賴,例如對(duì)內(nèi)核的依賴,對(duì)特定的網(wǎng)絡(luò)設(shè)備和磁盤型號(hào)的依賴等等。只有盡量少的依賴,才能夠做到最大的適配性。
避免資源消耗過(guò)高
云原生存儲(chǔ)系統(tǒng)以容器的形式和業(yè)務(wù)系統(tǒng)混合部署在容器平臺(tái)上。如果存儲(chǔ)系統(tǒng)占用過(guò)多的計(jì)算資源(CPU、內(nèi)存),則會(huì)導(dǎo)致整體投入成本太高。
聲明式運(yùn)維方式
存儲(chǔ)系統(tǒng)應(yīng)支持通過(guò)聲明式的接口進(jìn)行運(yùn)維管理,同時(shí)支持一定程度的自動(dòng)化運(yùn)維,包括在線擴(kuò)容、升級(jí)等等。當(dāng)發(fā)生硬件故障時(shí),存儲(chǔ)服務(wù)可以自動(dòng)恢復(fù),以保證業(yè)務(wù)系統(tǒng)不受影響。
云原生生態(tài)
云原生存儲(chǔ)還需要能夠很好地和其他云原生基礎(chǔ)設(shè)施配合,例如云原生數(shù)據(jù)庫(kù),使得云原生數(shù)據(jù)庫(kù)可以真正的在公有云和私有云都能夠得到一致的用戶體驗(yàn)。同時(shí),云原生存儲(chǔ)應(yīng)該很好地和云原生的運(yùn)維生態(tài)系統(tǒng)結(jié)合,包括監(jiān)控、報(bào)警、日志處理等待。
總體而言,云原生存儲(chǔ)系統(tǒng)可以運(yùn)行在各種不同服務(wù)商提供的公有云環(huán)境或私有云環(huán)境中,并且為運(yùn)維人員提供相同接口和運(yùn)維方式,極大降低運(yùn)維團(tuán)隊(duì)的負(fù)擔(dān)。
市場(chǎng)上的云原生存儲(chǔ)方案
為了更好的理解在云環(huán)境中如何構(gòu)建云原生存儲(chǔ),先看幾個(gè)在Kubernetes企業(yè)環(huán)境中部署主流的云原生存儲(chǔ)方案。
Ceph on Kubernetes with Rook
Ceph是圣克魯茲加利福尼亞大學(xué)的Sage Weil在2003年開(kāi)發(fā)的,也是他博士學(xué)位項(xiàng)目中的一部分。Ceph LTS成熟穩(wěn)定、高可用、生態(tài)強(qiáng)大,在云原生時(shí)代和Kubernets緊密集成。
Ceph基于RADOS(Reliable Autonomic Distributed Object Store)的高可用存儲(chǔ),在云原生時(shí)代之前已經(jīng)廣泛生產(chǎn)部署的高可用存儲(chǔ),支持最廣泛的塊存儲(chǔ)RBD、文件POSIX Cephfs,以及對(duì)象存儲(chǔ)訪問(wèn)協(xié)議。
RedHat/SUSE目前是Ceph最主要的商業(yè)化支持者,在多個(gè)容器平臺(tái)落地案例中,RBD、CephFS都被采用作為容器平臺(tái)實(shí)施的主要存儲(chǔ),用來(lái)彌補(bǔ)基礎(chǔ)云存儲(chǔ)的缺失。
Rook目前是在Kubernetes產(chǎn)品級(jí)可用的部署和運(yùn)維Ceph編排工具。
Portworx
Portworx以容器服務(wù)的方式部署,每個(gè)節(jié)點(diǎn)稱為PX,向下對(duì)接各種公有云的塊存儲(chǔ)或者裸金屬服務(wù)器,向上提供塊或文件服務(wù)。
不綁定硬件形態(tài)和廠商,可接入任何一家公有云或者自建服務(wù)器集群(只需支持iSCSI或FC協(xié)議),目前Portworx主打能力云災(zāi)備DR、多云復(fù)制,具備完備的快照(ROW)、多云管理、同步復(fù)制(RTO,秒級(jí))異步復(fù)制(RPO<=15min),可以通過(guò)Kubernetes CRD申明方式,優(yōu)雅實(shí)現(xiàn)持久化云下應(yīng)用帶數(shù)據(jù)自動(dòng)遷移云上能力。PX可以獨(dú)立部署,并不強(qiáng)依賴Kubernetes的容器網(wǎng)絡(luò)。
OpenEBS
OpenEBS基于Kubernetes構(gòu)建的開(kāi)源版EBS,軟件定義PV:將各種介質(zhì),包括本地磁盤、云等各種存儲(chǔ)統(tǒng)一池化和管理。使用iSCSI作為存儲(chǔ)協(xié)議。沒(méi)有綁定某一個(gè)廠商的存儲(chǔ),可以靈活的接入各種存儲(chǔ)的一個(gè)原因。
從某種意義上,OpenEBS也是更加靈活、輕量。但是強(qiáng)依賴容器網(wǎng)絡(luò),增加了抽象層OpenEBS layer,寫入操作要通過(guò)抽象層,并且每個(gè)卷PV都有獨(dú)立的controller,增加了額外的開(kāi)銷,雖然可以做到更靈活,但相比于Portworx、Ceph來(lái)說(shuō),其在性能上有比較大的劣勢(shì)。
目前,已經(jīng)有大量的企業(yè)在將自身的存儲(chǔ)能力引入到Kubernetes中。
在CNCF公布的《2019 Cloud Native Computing Foundation》市場(chǎng)調(diào)研中,分析了當(dāng)前和未來(lái)K8s采用情況,其中許多用戶將他們當(dāng)前的存儲(chǔ)和云的供應(yīng)商列為云原生候選名單中。
調(diào)查顯示,在云原生存儲(chǔ)的選擇上,用戶最常使用Amazon EBS、Google Persistent Disk和Azure Disk Storage。
第二梯隊(duì)的是Ceph、CSI和Gluster,其中37%的Gluster用戶也使用Ceph。Ceph和Gluster是分布式文件系統(tǒng),在多個(gè)節(jié)點(diǎn)之間添加了持久層。但是,它們沒(méi)有很好地集成到K8s工具和工作流中,因而可能更難以維護(hù)和配置。
剩下的第三梯隊(duì)產(chǎn)品,基本是由以存儲(chǔ)為中心的服務(wù)商提供的服務(wù),如Dell EMC、NetApp和Pure Storage。最初,Kubernetes集成了卷插件以連接到這些產(chǎn)品的存儲(chǔ)后端。不幸的是,上游Kubernetes發(fā)行版變得十分臃腫。這意味著對(duì)插件的任何微小更新或更改都要重建和編譯整個(gè)代碼。
而對(duì)于傳統(tǒng)存儲(chǔ),客戶可能會(huì)有更多抱怨聲。例如,選擇Pure Storage的客戶中有46%的在處理與容器相關(guān)的存儲(chǔ)方面遇到了挑戰(zhàn),而Kubernetes的普通用戶這一比例僅為27%。盡管有13%的用戶使用了容器存儲(chǔ)接口(CSI),但問(wèn)題難免還是會(huì)出現(xiàn)。
事實(shí)情況是,傳統(tǒng)存儲(chǔ)供應(yīng)商包括純?nèi)萜鞔鎯?chǔ)服務(wù)商在內(nèi),正有轉(zhuǎn)向CSI的趨勢(shì)。雖然總體上只有13%的用戶在考慮使用CSI,但在存在存儲(chǔ)挑戰(zhàn)的用戶群中,對(duì)CSI的需求一躍升至22%。
結(jié)語(yǔ)
隨著云原生時(shí)代的到來(lái),越來(lái)越多的業(yè)務(wù)系統(tǒng)會(huì)采用云原生架構(gòu)。存儲(chǔ)系統(tǒng)作為承載業(yè)務(wù)穩(wěn)定運(yùn)行的核心組件,在云原生的架構(gòu)下,其重要性也相應(yīng)地逐漸提高。
事實(shí)上,云原生存儲(chǔ)遇到的性能、彈性、高可用、加密、隔離、可觀測(cè)性、生命周期等方面的問(wèn)題,不但需要存儲(chǔ)產(chǎn)品層次的改進(jìn),更需要在云原生的控制/數(shù)據(jù)平面的改進(jìn),以推進(jìn)云原生存儲(chǔ)的演進(jìn),而這正是新老存儲(chǔ)廠商有待優(yōu)化和提供的服務(wù)空間。
值。