歡迎光臨
每天分享高質量文章

Rook:基於Ceph的Kubernetes儲存解決方案

Rook是一款執行在Kubernetes叢集中的儲存服務編排工具,在0.8版本中,Rook已經變成Beta發行版,如果還沒有嘗試過Rook,可以現在嘗鮮。
Rook是什麼,為什麼很重要?Ceph執行在Kubernetes叢集中很久了,為什麼要有這麼大的變動?如果以前玩過Ceph叢集,肯定深知維護Ceph叢集的複雜性,Rook就是為此而生,使用Kubernetes分散式平臺簡化大量針對Ceph儲存的操作和維護工作。
Rook透過一個操作器(operator)完成後續操作,只需要定義需要的狀態就可以了。Rook透過操作器監控狀態需求變化,並將配置檔案分配到叢集上生效。操作器關註包括各種叢集執行和啟停所需的狀態資訊。本文將詳細討論這些細節。


Mons

Ceph叢集中最重要的資訊是Mons的quorum,一般叢集中有有三個Mons,保持高可用以及quorum可用性以防資料不可用,當建立叢集是,Rook將會:
  • 啟動特定節點上的Mons,確保他們在quorum中

  • 定期確定Mons狀態,確保他們在quorum中

  • 如果某個Mon出現故障,並且沒有重新啟動,操作器會往quorum中新增一個新的mon,並將失效的移除quorum

  • 更新Ceph客戶端和Daemons的IP地址

Mgr

Mgr是一個無狀態服務,提供叢集資訊。除了啟動核心功能外,Rook還參與配置其它兩個Mgr外掛:
  • 蒐集Prometheus狀態

  • 啟動Ceph面板,並啟動服務點

OSDs

叢集中最具挑戰的是OSD部分,儲存部分的核心部件。大規模叢集會在上線前大量使用OSD。Rook會根據如何使用,以兩種樣式配置他們,可以參考更多OSD專題[1]。
完全自動化
最簡單使用方式就是“使用所有資源”樣式。意味著操作者自動在所有節點上啟動OSD裝置,Rook會用如下標準監控併發現可用裝置:
  • 裝置沒有分割槽

  • 裝置沒有格式化的檔案系統

Rook不會使用不滿足以上標準的裝置。操作完畢後(一般要幾分鐘),就擁有一套OSD配置完畢的儲存叢集。
自宣告樣式
第二種樣式給使用者更大的選擇控制許可權,使用者可以指定哪些節點或者裝置會被使用。有幾個層級方式進行配置:
節點:
  • 宣告哪些節點上會啟動OSD

  • 採用“標簽”方式用Kubernetes來宣告節點

裝置:
  • 宣告啟動OSD的裝置名

  • 宣告裝置過濾規則,併在其上啟動OSD

  • 採用SSD或者NVME裝置建立bluestore的metadata分割槽,bluestore資料分割槽分佈在各種裝置上

這種樣式很靈活,可以選擇需要啟動OSD的裝置。


客戶訪問

Kubernetes中,需要儲存的客戶端都會使用PV並掛載到Pod上,Rook提供FlexVolume外掛,此外掛可以使訪問Ceph叢集更加簡便,只需要宣告儲存類相關的池,然後在Pod上宣告指向儲存類的PVC,本例[2]將解釋在Pod中掛載RBD映象的具體步驟。


RGW

除了基礎的RADOS叢集,Rook還會幫助管理物件空間。如果宣告需要一個物件儲存空間,Rook將:
  • 為物件空間建立metadata和資料池

  • 啟動RGW Daemon,如果需要還可以執行高可用實體

  • 透過RGW Daemon建立Kubernetes裝置提供負載均衡。物件儲存則在儲存內部提供

MDS

最後,但不僅限如此,rook還可以配置CephFS提供共享儲存空間服務。當生命在叢集中需要檔案系統時,Rook會:
  • 為CephFS建立metadata和資料池

  • 建立檔案系統

  • 使用MDS啟動期望數量的實體

檔案系統可以被叢集中Pod使用,透過相關或者獨立路徑為每個Pod提供訪問方式。參看如下示例[3]。


Ceph工具

即使實現了自動化,仍然需要使用Ceph工具維護正常運轉。但是隨著越來越自動化,工具的依賴度會慢慢降低。同時,如果需要執行Ceph工具,要麼啟動一個工具箱,或者透過連線到Mon Daemon容器執行這些工具。
下一步工作

Rook執行前提是有一套儲存需要配置的Kubernetes叢集。Rook的標的就是讓配置儲存的工作越來越簡單,當然目前我們還只是處在這一工作的開始。
我們正在積極開發Rook[4]專案,期待有更多功能出現。我們也希望更多專家出現在社群,如果有問題,可以透過Rook Slack[5]和我們溝通。
相關連結:
  1. https://rook.io/docs/rook/v0.8/ceph-cluster-crd.html#storage-selection-settings

  2. https://rook.io/docs/rook/v0.8/block.html

  3. https://rook.io/docs/rook/v0.8/filesystem.html#consume-the-shared-file-system-k8s-registry-sample

  4. https://github.com/rook/rook

  5. https://rook-slackin.herokuapp.com/

原文連結:https://ceph.com/community/rook-automating-ceph-kubernetes/
3天Kubernetes線下實戰培訓

Kubernetes應用實戰培訓將於2018年9月14日在上海開課,3天時間帶你係統掌握Kubernetes本次培訓包括:容器特性、映象、網路;Docker特性、架構、元件、概念、Runtime;Docker安全;Docker實踐;Kubernetes架構、核心元件、基本功能;Kubernetes設計理念、架構設計、基本功能、常用物件、設計原則;Kubernetes的實踐、執行時、網路、外掛已經落地經驗;微服務架構、DevOps等,點選下方圖片檢視詳情。

贊(0)

分享創造快樂