在k8s上編排ceph是容器生態存儲方案的一個趨勢,能非常簡單快速的構建出存儲集羣,特別適合供有狀態服務使用,計算存儲分離將使應用的管理變簡單,業務層與雲操作系統層也能更好的解耦。
本文中需要用的yaml文件和Dockerfile等都放到這個倉庫 包含:rook operator ceph cluster storage class配置,mysql wordpress事例,性能測試fio Dockerfile與yaml等
安裝
|
查看operator是否成功:
|
然後創建ceph集羣:
|
|
查看ceph集羣:
|
參數說明:
|
訪問ceph dashboard:
|
然後訪問https://10.1.86.201:31631 即可
管理賬戶admin,獲取登錄密碼:
|
|
使用
創建pool
|
創建pvc
在cluster/examples/kubernetes 目錄下,官方給了個worldpress的例子,可以直接運行一下:
|
查看PV PVC:
|
看下yaml文件:
|
是不是非常簡單。
要訪問wordpress的話請把service改成NodePort類型,官方給的是loadbalance類型:
|
外部訪問ceph集羣
cluster.yaml裏有配置,可配置成共享宿主機網絡,這樣外面可直接連接ceph集羣:
|
ceph集羣監控
通過prometheus operator配合rook可以快速構建ceph集羣的監控,sealyun安裝包中已經自帶了prometheus operator,所以直接幹即可
啓動ceph prometheus
注意這裏是爲ceph單獨起了一個prometheus,這樣做挺好,因爲畢竟可以緩解prometheus單點的壓力
|
然後我們的grafana在30000端口,先在grafana上添加數據源
數據源要配置成:
|
|
導入dashboard
還有幾個別的dashboard可以導入: Ceph - Cluster Ceph - OSD Ceph - Pools
再次感嘆生態之強大
增加節點,刪除節點
|
|
把useAllNodes設置成false,然後在nodes列表裏增加節點名即可,保存退出後會自動增加ceph節點
|
刪除同理,直接edit刪除即可,十分強大
性能測試
這裏着重說明測試方法,給出在我的場景下的測試結果,用戶應當根據自己的場景進行自己的測試。
測試環境
我這裏使用阿里雲服務器,掛載了一個1000G的磁盤,不過我實際測試時用的盤很少(盤大太慢)
|
可看到一個本地盤和一個ceph掛過來的盤
先搞個fio的鏡像
|
測試容器,稍微改一下mysql的yaml:
|
測試過程
進入到容器內跑測試工具:
|
結果:
|
在宿主機上測試:
|
|
這裏看到隨機讀寫性能損失約 27%多,這個結論並沒有太多參考意義,用戶應當根據自己實際場景進行測試
改用ceph共享宿主機網絡模式進行測試,結果差不多,並無性能提升
要想排除在容器內測試因素的影響,也可以直接在宿主機上對塊設備進行測試,做法很簡單,可以把塊掛到別的目錄上如:
|
bluestore方式
直接使用裸盤而不使用分區或者文件系統的方式部署ceph
|
bluestore模式能顯著提升ceph性能,我這邊測試隨機讀寫性能提升了8%左右
|
總結
分佈式存儲在容器集羣中充當非常重要的角色,使用容器集羣一個非常重要的理念就是把集羣當成一個整體使用,如果你在使用中還關心單個主機,比如調度到某個節點,
掛載某個節點目錄等,必然會導致不能把雲的威力百分之百發揮出來。 一旦計算存儲分離後,就可真正實現隨意漂移,對集羣維護來說是個極大的福音。
比如集羣機器過保了需要下架,那麼我們雲化的架構因爲所有東西無單點,所以只需要簡單驅逐改節點,然後下架即可,不用關心上面跑的是什麼業務,不管是有狀態還是無
狀態的都可以自動修復。 不過目前面臨最大的挑戰可能還是分佈式存儲的性能問題。 在性能要求不苛刻的場景下我是極推薦這種計算存儲分離架構的。
常見問題
注意主機時間一定要同步
|
|
ceph cluster無法啓動
報這個錯誤
|
需要把宿主機store.db文件刪掉,然後delete pod即可, 主意別指錯目錄如果自己改了目錄的話
|
|
rook刪除PVC PV依然存在
因爲storageclass回收參數:
|
|
rook-ceph namespace無法刪除 cephclusters.ceph.rook.io CRD無法刪除
|
把CRD metadata finalizers下面的內容刪了,CRD就會自動刪除,然後只要rook-ceph namespace裏沒有東西就會自動清理掉
|
|
使用宿主機網絡時集羣無法正常啓動
集羣中單節點時把mon設置成1即可
|
探討可加QQ羣:98488045
本文分享自微信公衆號 - sealyun(gh_f33fe7b0c869)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。