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

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)

分享創造快樂