Rook是一款執行在Kubernetes叢集中的儲存服務編排工具,在0.8版本中,Rook已經變成Beta發行版,如果還沒有嘗試過Rook,可以現在嘗鮮。
Rook是什麼,為什麼很重要?Ceph執行在Kubernetes叢集中很久了,為什麼要有這麼大的變動?如果以前玩過Ceph叢集,肯定深知維護Ceph叢集的複雜性,Rook就是為此而生,使用Kubernetes分散式平臺簡化大量針對Ceph儲存的操作和維護工作。
Rook透過一個操作器(operator)完成後續操作,只需要定義需要的狀態就可以了。Rook透過操作器監控狀態需求變化,並將配置檔案分配到叢集上生效。操作器關註包括各種叢集執行和啟停所需的狀態資訊。本文將詳細討論這些細節。
Ceph叢集中最重要的資訊是Mons的quorum,一般叢集中有有三個Mons,保持高可用以及quorum可用性以防資料不可用,當建立叢集是,Rook將會:
Mgr是一個無狀態服務,提供叢集資訊。除了啟動核心功能外,Rook還參與配置其它兩個Mgr外掛:
-
蒐集Prometheus狀態
-
啟動Ceph面板,並啟動服務點
叢集中最具挑戰的是OSD部分,儲存部分的核心部件。大規模叢集會在上線前大量使用OSD。Rook會根據如何使用,以兩種樣式配置他們,可以參考更多OSD專題[1]。
最簡單使用方式就是“使用所有資源”樣式。意味著操作者自動在所有節點上啟動OSD裝置,Rook會用如下標準監控併發現可用裝置:
Rook不會使用不滿足以上標準的裝置。操作完畢後(一般要幾分鐘),就擁有一套OSD配置完畢的儲存叢集。
第二種樣式給使用者更大的選擇控制許可權,使用者可以指定哪些節點或者裝置會被使用。有幾個層級方式進行配置:
-
宣告哪些節點上會啟動OSD
-
採用“標簽”方式用Kubernetes來宣告節點
Kubernetes中,需要儲存的客戶端都會使用PV並掛載到Pod上,Rook提供FlexVolume外掛,此外掛可以使訪問Ceph叢集更加簡便,只需要宣告儲存類相關的池,然後在Pod上宣告指向儲存類的PVC,本例[2]將解釋在Pod中掛載RBD映象的具體步驟。
除了基礎的RADOS叢集,Rook還會幫助管理物件空間。如果宣告需要一個物件儲存空間,Rook將:
最後,但不僅限如此,rook還可以配置CephFS提供共享儲存空間服務。當生命在叢集中需要檔案系統時,Rook會:
-
為CephFS建立metadata和資料池
-
建立檔案系統
-
使用MDS啟動期望數量的實體
檔案系統可以被叢集中Pod使用,透過相關或者獨立路徑為每個Pod提供訪問方式。參看如下示例[3]。
即使實現了自動化,仍然需要使用Ceph工具維護正常運轉。但是隨著越來越自動化,工具的依賴度會慢慢降低。同時,如果需要執行Ceph工具,要麼啟動一個工具箱,或者透過連線到Mon Daemon容器執行這些工具。
Rook執行前提是有一套儲存需要配置的Kubernetes叢集。Rook的標的就是讓配置儲存的工作越來越簡單,當然目前我們還只是處在這一工作的開始。
我們正在積極開發Rook[4]專案,期待有更多功能出現。我們也希望更多專家出現在社群,如果有問題,可以透過Rook Slack[5]和我們溝通。
-
https://rook.io/docs/rook/v0.8/ceph-cluster-crd.html#storage-selection-settings
-
https://rook.io/docs/rook/v0.8/block.html
-
https://rook.io/docs/rook/v0.8/filesystem.html#consume-the-shared-file-system-k8s-registry-sample
-
https://github.com/rook/rook
-
https://rook-slackin.herokuapp.com/
原文連結:https://ceph.com/community/rook-automating-ceph-kubernetes/
Kubernetes應用實戰培訓將於2018年9月14日在上海開課,3天時間帶你係統掌握Kubernetes。本次培訓包括:容器特性、映象、網路;Docker特性、架構、元件、概念、Runtime;Docker安全;Docker實踐;Kubernetes架構、核心元件、基本功能;Kubernetes設計理念、架構設計、基本功能、常用物件、設計原則;Kubernetes的實踐、執行時、網路、外掛已經落地經驗;微服務架構、DevOps等,點選下方圖片檢視詳情。
長按二維碼向我轉賬
受蘋果公司新規定影響,微信 iOS 版的贊賞功能被關閉,可透過二維碼轉賬支援公眾號。
微信掃一掃
使用小程式