容器“撩”存儲(chǔ)手段升級(jí),容器存儲(chǔ)接口(CSI)勝出
容器雖然不是一個(gè)新事物,但是國(guó)內(nèi)的市場(chǎng)應(yīng)該沒有起來(lái),國(guó)外好點(diǎn),但是總體來(lái)說(shuō),容器目前的市場(chǎng)空間還不夠大。尤其最近這段時(shí)間,據(jù)我了解,國(guó)內(nèi)有幾個(gè)圍繞容器的創(chuàng)業(yè)公司融資困難,面臨破產(chǎn)的風(fēng)險(xiǎn)。
但我覺得容器還是一個(gè)未來(lái)的方向,這個(gè)市場(chǎng)會(huì)慢慢起來(lái)的,而且,我們也發(fā)現(xiàn),很多追求創(chuàng)新的公司,已經(jīng)開始在生產(chǎn)系統(tǒng)上部署容器了。
根據(jù)Gartner在IOCS 2018 Conference上的調(diào)查,容器部署到生產(chǎn)系統(tǒng)的比例已經(jīng)高達(dá)27%。當(dāng)然,這個(gè)主要是調(diào)查的對(duì)象,即參會(huì)的企業(yè)都是追求創(chuàng)新的企業(yè)。
而且,有22%的受訪者認(rèn)為,到2020年,容器將是其主要的計(jì)算抽象,而不是虛擬機(jī)。
容器設(shè)計(jì)當(dāng)初,其實(shí)是不需要***存儲(chǔ)的,但是,現(xiàn)在容器越來(lái)越多部署到生產(chǎn)環(huán)境中,很多數(shù)據(jù)需要***保存的,容器沒了,但數(shù)據(jù)不能沒。因此,容器支持***存儲(chǔ)就是業(yè)界一個(gè)熱門的話題。容器要使用外部存儲(chǔ),一般通過(guò)卷插件來(lái)支持(參考我原來(lái)的文章傳言微軟要收購(gòu)Docker,存儲(chǔ)廠商紛紛推出原生卷插件)。
但是,由于編排平臺(tái)部署和運(yùn)營(yíng)容器環(huán)境日益普及,大多數(shù)IT***現(xiàn)在都在尋找可與容器編排器(如Kubernetes)緊密集成的持久存儲(chǔ)解決方案。通過(guò)這種方法,編排器將能夠以一致的方式集中與許多外部存儲(chǔ)平臺(tái)通信,提供數(shù)據(jù)服務(wù),并集中執(zhí)行存儲(chǔ)生命周期和卷編排。
但剛開始,編排器只是把少數(shù)的卷插件集中到發(fā)行版里進(jìn)去了,這種方式叫in-tree存儲(chǔ)插件。這種方式雖然可以和容器編排器協(xié)作了,但是缺點(diǎn)非常明顯:
存儲(chǔ)卷插件開發(fā)與Kubernetes版本緊密結(jié)合并依賴于Kubernetes版本。
Kubernetes開發(fā)人員/社區(qū)負(fù)責(zé)測(cè)試和維護(hù)所有供應(yīng)商的卷插件,而不僅僅是測(cè)試和維護(hù)標(biāo)準(zhǔn)插件API。
卷插件中的錯(cuò)誤會(huì)影響Kubernetes的穩(wěn)定性,因?yàn)樗鼈円酝耆珯?quán)限運(yùn)行。
存儲(chǔ)供應(yīng)商被迫使插件源代碼可用,并且不能僅發(fā)布二進(jìn)制文件。
由于in-tree存儲(chǔ)插件支持的存儲(chǔ)有限,如果你的存儲(chǔ)不在支持范圍內(nèi),那么你就必須開發(fā)自己的插件,但是,這個(gè)插件沒有標(biāo)準(zhǔn),各家做各家的,和編排器的版本還是耦合太緊。
為解決該技術(shù)的問(wèn)題,2018年,云原生計(jì)算基金會(huì)(Cloud Native Computing Foundation-CNCF)發(fā)布了Kubernetes 1.13,它GA了容器存儲(chǔ)接口(Container Storage Interface---CSI)。CSI把容器存儲(chǔ)進(jìn)行抽象,通過(guò)標(biāo)準(zhǔn)接口的形式把存儲(chǔ)部分移到容器編排系統(tǒng)外部去。
CSI是在容器編排系統(tǒng)(如Kubernetes,Docker或Mesosphere)之間集成存儲(chǔ)系統(tǒng)驅(qū)動(dòng)程序的***方法。CSI的目標(biāo)是為容器編排系統(tǒng)建立標(biāo)準(zhǔn)化機(jī)制,以將任意存儲(chǔ)系統(tǒng)暴露給其容器化工作負(fù)載。CSI規(guī)范源自各種容器編排系統(tǒng)的社區(qū)成員之間的合作,包括Kubernetes,Mesos,Docker和Cloud Foundry。該規(guī)范獨(dú)立于Kubernetes開發(fā),并保持在容器存儲(chǔ)接口(CSI)規(guī)范 。這個(gè)新接口是對(duì)容器生態(tài)系統(tǒng)的重大改進(jìn),因?yàn)樗鼧?biāo)準(zhǔn)化了將外部存儲(chǔ)系統(tǒng)與許多容器編排系統(tǒng)集成的模型。特別是對(duì)于Kubernetes,它使存儲(chǔ)系統(tǒng)驅(qū)動(dòng)程序免于被綁定到Kubernetes發(fā)布計(jì)劃,因?yàn)樗缓喜⒌较嗤拇a庫(kù)中。通過(guò)CSI,現(xiàn)在可以開發(fā)存儲(chǔ)系統(tǒng)驅(qū)動(dòng)程序并將其異步安裝到容器編排版本,從而提供更快的開發(fā)和錯(cuò)誤修復(fù)。
使用CSI,存儲(chǔ)供應(yīng)商不必為每個(gè)容器編排或開源提供多個(gè)驅(qū)動(dòng)程序,不需要將他們的代碼以in-tree方式集成到容器編排器中,從而節(jié)省時(shí)間并加快開發(fā)速度。對(duì)于IT而言,CSI的使用將使更容易的設(shè)置,標(biāo)準(zhǔn)化配置以及針對(duì)容器化工作負(fù)載的存儲(chǔ)解決方案的無(wú)縫集成和遷移。
由于容器的編排器最火當(dāng)算Kubernetes莫屬,因此,如果你也采用這個(gè)編排器,建議盡快升級(jí)到1.13版本,就可以***支持CSI接口了,以后升級(jí)編排器,再也無(wú)需關(guān)注存儲(chǔ)插件了。
而且,我剛才看了一下https://kubernetes-csi.github.io/docs/drivers.html(大家可以點(diǎn)擊文后的閱讀原文鏈接查看),發(fā)現(xiàn)其實(shí)已經(jīng)蠻多存儲(chǔ)產(chǎn)品開始支持CSI接口了。
不過(guò),我們看到,傳統(tǒng)存儲(chǔ)產(chǎn)品很少,大部分是SDS類型的產(chǎn)品。還有,我們看到,中國(guó)的廠商在里面也發(fā)揮了重要作用:***我們看到華為創(chuàng)立的OpenSDS開源項(xiàng)目也已經(jīng)支持了CSI,第二我們看到XSKY是唯一支持CSI接口的中國(guó)公司。XSKY在容器環(huán)境確實(shí)做了比較多工作,大家感興趣可以看看其官微的一篇文章:詳解支持 kubernetes CSI的持久化容器存儲(chǔ)。
由于CSI的種種好處,Gartner最近在其《An I&O Leader’s Guide to Storage for Containerized Workloads》也建議,負(fù)責(zé)規(guī)劃和支持基礎(chǔ)設(shè)施交付的I&O負(fù)責(zé)人應(yīng):
- 選擇與Kubernetes更緊密集成并支持標(biāo)準(zhǔn)接口(如CSI)的供應(yīng)商,同時(shí)避免使用專有插件和接口。
- 選擇符合微服務(wù)架構(gòu)原則的存儲(chǔ)解決方案,并遵循容器本機(jī)數(shù)據(jù)服務(wù)的要求,例如與硬件無(wú)關(guān),API驅(qū)動(dòng),基于分布式架構(gòu),并能夠支持邊緣,核心或公共云部署。
- 選擇與開發(fā)人員工作流工具緊密結(jié)合的存儲(chǔ)產(chǎn)品,這些工具可以直接與應(yīng)用層集成,以實(shí)現(xiàn)可移植性,擴(kuò)展和數(shù)據(jù)保護(hù)。
- 評(píng)估供應(yīng)商提供的持續(xù)創(chuàng)新,優(yōu)質(zhì)客戶支持和一致的定價(jià)模型,因?yàn)槿萜魃鷳B(tài)系統(tǒng)正在通過(guò)未經(jīng)證實(shí)的供應(yīng)商業(yè)務(wù)模型快速發(fā)展。