以下為演講文字整理:

很高興和大家探討Ceph的話題,我分享的題目是基于Ceph的容器存儲。先來看一下容器的堆棧,Ceph很大的應(yīng)用場景是在OpenStack,Ceph伴隨著OpenStack一起火起來,在傳統(tǒng)的存儲領(lǐng)域我們逐漸開始使用Ceph。隨著容器軟件棧的重要性提升,Ceph逐漸也在容器中做一些涉獵。以紅帽的角度來講,之前基于面向容器存儲的解決方案,今后會推出基于Ceph的解決方案,面向未來無論是容器還是虛機(jī),基礎(chǔ)架構(gòu)平臺會通過Ceph成為整體統(tǒng)一的軟件。

在實(shí)際的應(yīng)用場景里,除了容器,虛擬機(jī)在很多面向傳統(tǒng)應(yīng)用還是比較多的,在統(tǒng)一的調(diào)度層進(jìn)行Kubernetes實(shí)現(xiàn),存儲是由什么實(shí)現(xiàn)的?OpenStack的存儲一直都是通過Ceph作為底層存儲,接下來Ceph也會作為Kubernetes的底層存儲給整個(gè)平臺使用。

去年在北京有一個(gè)國外的同事介紹Rook相關(guān)的內(nèi)容,今天我把進(jìn)展跟大家分享系一下。如果大家不了解Rook,我也會簡單介紹一下Rook是什么。Rook是一個(gè)控制面,Ceph有很多的問題,我特別注意最后一頁的問題,比如說有些跟硬件相關(guān)或是跟運(yùn)維相關(guān),在面向Kubernetes的平臺上,在容器出現(xiàn)的時(shí)候,最早Docker出現(xiàn)可以簡化運(yùn)維,可以把應(yīng)用和應(yīng)用的配置打包放在容器里簡化運(yùn)維。Docker簡化運(yùn)維后來逐漸出現(xiàn)了Kubernetes,容器部署、上線方便。如何管理大規(guī)模的平臺,Kubernetes逐漸需要持久化的存儲,容器是完全的分布式無狀態(tài)的,實(shí)際上我們會發(fā)現(xiàn)做到這點(diǎn)太難了,特別是對于復(fù)雜的邏輯、傳統(tǒng)的應(yīng)用,沒法做到真正的分布式的狀態(tài),所以需要持久化的存儲。

隨著Ceph的成熟會作為統(tǒng)一的存儲,我們把它作為容器的軟件堆棧,并認(rèn)為它是完全可以的。把它放在容器里,接下來是如何管理Ceph大規(guī)模的集群,我們會看到Rook的架構(gòu),這個(gè)東西很簡單,可以在Ceph項(xiàng)目里找到這個(gè)圖。

對于Kubernetes來講,我們認(rèn)為是控制容器的控制面,如果涉及到存儲需要幾點(diǎn),這是Rook目前的發(fā)展?fàn)顟B(tài),包括紅帽會貢獻(xiàn)的內(nèi)容。現(xiàn)在Rook有一個(gè)Operator,Kubernetes上運(yùn)維不同應(yīng)用類似機(jī)器人角色的新東西,RookOperator針對Ceph和其持久化的存儲方案,比如數(shù)據(jù)庫提供Rook的Operator,當(dāng)然Rook的出現(xiàn)是以Ceph為核心。紅帽在Rook里也貢獻(xiàn)了很多的代碼,我們會用Rook管理在容器軟件站里的存儲。里面還涉及到Rook Agent,現(xiàn)在用的Rook volume,它作為管理者進(jìn)行管理運(yùn)行在每個(gè)kubelet的節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)也會有一個(gè)plugin,可以做一些運(yùn)維相關(guān)的工作。

這是簡單的圖,我們會發(fā)現(xiàn)在Ceph運(yùn)行的每個(gè)節(jié)點(diǎn)上會有Agent的進(jìn)程,后面的例子里我們會看到,它是管理里面OSD、Mon,如果不是當(dāng)前期望的狀態(tài),Agent會恢復(fù)到期待的狀態(tài),對于Kubernetes來講,它的管理不光是原生的API,實(shí)際上擴(kuò)展到管理Ceph的集群。這是我們對Operator的簡單定義,Ceph的集群運(yùn)行狀態(tài)不是我們期待的狀態(tài),Operator可以恢復(fù)到時(shí)候我們期望的狀態(tài)。至于管理哪些方面?目前來說主要是管理Ceph運(yùn)行的進(jìn)程,比如說Mon、OSD、RGW、NFS等,還有其他的進(jìn)程和狀態(tài),在Rook里可以管理,對它原生的API進(jìn)行擴(kuò)展。

我們要管理Ceph的話,有一些東西是在原生的API里不存在的,需要對它進(jìn)行擴(kuò)展。整體的管理框架是前面提到的Operator Framework。之前容器的軟件棧更多面向把所有的應(yīng)用在Kubernetes里走管理,現(xiàn)在更多的精力放在日常管理和運(yùn)維,當(dāng)有了Operator以后,它類似于自動化的方式,叫自動化機(jī)器人有點(diǎn)夸張,現(xiàn)在的做法是運(yùn)維人員運(yùn)行不同的應(yīng)用,這些不同的應(yīng)用比如說MYSQL,可能有一些運(yùn)維的經(jīng)驗(yàn),用到什么樣的情況需要做怎樣的操作,這些已經(jīng)寫在Operator的邏輯里。

Framework是一個(gè)框架,負(fù)責(zé)監(jiān)控當(dāng)前的狀態(tài),當(dāng)前的狀態(tài)如果不是當(dāng)下希望的會做一些自動的恢復(fù)。比如說當(dāng)前是三個(gè)節(jié)點(diǎn),現(xiàn)在宕掉一個(gè)節(jié)點(diǎn),現(xiàn)在需要啟起來需要運(yùn)維人員手動啟,如果有Operator以后,就會把容器自動啟起來,已達(dá)到運(yùn)維的作用。

接下來我們通過具體的例子,介紹如何通過這樣的機(jī)制做運(yùn)維?比如說CephCluster是新的類型,可以看到所有Excel都已經(jīng)容器化,這是它的版本包括使用的網(wǎng)絡(luò),這是基本的狀態(tài)。

接下來再看一個(gè)具體的例子,Mon Settings,集群里要求是三個(gè),這里指定是3,還有一些其他的屬性,如果我們通過這個(gè)方式把Mon起來,現(xiàn)在手動殺掉一個(gè)Mon,因?yàn)橛辛薕perator,有了Rook的Operator,會自動把集群的Mon恢復(fù)成三個(gè),有一些人為的工作可以通過這種Operator方式實(shí)現(xiàn)。

對OSD的配置,Rook還是屬于早期的發(fā)展階段,一開始安裝部署Ceph的集群,選取節(jié)點(diǎn)的時(shí)候用怎樣的方式?是用機(jī)器上所有節(jié)點(diǎn)的所有盤還是一些有選擇的?這個(gè)例子是所有的節(jié)點(diǎn)、所有的盤,里面指定節(jié)點(diǎn)上的盤,實(shí)際上都是在右邊指定的,里面哪些存儲設(shè)備?;蚴且恍┮?guī)則,比如說我們是用里面的正確表達(dá)式。我們對于一些性能上的考量,比如說放在SSD上,對于DB放在什么上,不同的配置、設(shè)置都可以在里面體現(xiàn)。

比如說配置RBD Mirroring,包括RGW,RGW的幾個(gè)池子,包括副本池,在整個(gè)配置里都可以指定,包括配置Ceph的文件系統(tǒng),Ceph文件系統(tǒng)我們認(rèn)為也是逐漸走向成熟的狀態(tài),我們認(rèn)為給容器的軟件是完全沒有問題的。

最后講一下RookAgent以及未來的Rook發(fā)展趨勢,簡單說基于Ceph的容器存儲我們目前通過Rook的方式,把Ceph給到容器的軟件堆站用,有Rook和沒Rook的好處,之前大部分的工作還是需要手動做,Kubernetes平臺很多的應(yīng)用管理完全通過平臺自身的機(jī)制就可以完成,比如說上面部署MYSQL,有MYSQL的Operator,對于Ceph也是一個(gè)集群,如何更好的管理好集群?我們是需要工具的?,F(xiàn)在可以做的是,比如說第一步的安裝、部署、配置以及簡單的進(jìn)程數(shù),我們有三個(gè)進(jìn)程,哪個(gè)壞掉會重啟。未來很多的運(yùn)維工作都可以通過Ceph、Rook本身做。比如說我們?nèi)绾伟l(fā)現(xiàn)盤壞了,如果盤壞了需要換盤、敲幾個(gè)命令把盤摘掉加上去。還有一些工作比較復(fù)雜一點(diǎn),Ceph現(xiàn)在很多運(yùn)維監(jiān)控是通過外圍做的,現(xiàn)在我們可以搜集很多的信息,也可以掛一些普羅米修斯做整體的監(jiān)控、展現(xiàn)。這些東西都是可以跟Operator本身結(jié)合起來,通過監(jiān)控可以發(fā)現(xiàn)一些信息,如果有什么動作、啟發(fā)式的可以通過Operator在集群里做一些動作,比如說識別一些亞健康的狀態(tài)。一旦做了,比如說剔掉一個(gè)OSD、添加一個(gè)OSD,類似這樣的工作我們可以通過取得信息,通過這些信息把前后兩個(gè)工作勾起來。

還有一點(diǎn)是Rook在未來一定要改變,紅帽正在做,不久就會發(fā)布,目前它的機(jī)制還是FlexVolume,未來可能是從事CSI的標(biāo)準(zhǔn),這塊通過CSI管理Ceph的存儲,今天我的演講就到這里,謝謝大家。

分享到

Fred

baiyan

相關(guān)推薦