Rook-Ceph 分散式儲存系統快速部署
Rook-Ceph 分散式儲存系統快速部署
This guide will walk you through the basic setup of a Ceph cluster and enable you to consume block, object, and file storage from other pods running in your cluster.
- 官方文件,ofollow,noindex">https://rook.io/docs/rook/v0.8/ceph-quickstart.html
- Rook 0.8 安裝及Dashboard的問題和解決
版本要求
Rook支援的Kubernetes 要求版本高於v1.7。
預先檢查
確保 Kubernetes 叢集可以用於Rook
, 跟著這個檢查follow these instructions
.
如果使用dataDirHostPath
來持久化 rook 到 kubernetes 的宿主機,確保 host 至少有 5GB 以上空間可用,而且是指定的目錄下。
開始
如果幸運的話,Rook cluster 可以通過下面的kubectl commands來建立。更多細節,參考deploy the Rook operator 。
cd cluster/examples/kubernetes/ceph kubectl create -f operator.yaml kubectl create -f cluster.yaml
叢集執行後,就可以建立block, object, or file 儲存,從而可以被叢集中其它的應用所使用。
部署Rook Operator
這是部署Rook system components,的第一步,包括一個Rook agent運行於每一個節點上,作為Rook operator pod,預設部署在rook-ceph-system名稱空間中。
cd cluster/examples/kubernetes/ceph kubectl create -f operator.yaml # verify the rook-ceph-operator, rook-ceph-agent, and rook-discover pods are in the `Running` state before proceeding kubectl -n rook-ceph-system get pod
該operator可以通過Rook Helm Chart 來進行部署。
重啟Kubelet, (K8S 1.7.x only)
對於Kubernetes 1.8之前的版本, Kubelet 程序在所有的節點上都要進行重啟,在部署Rook operator 和 Rook agents之後。作為初始化 setup的一部分, Rook agents 部署和配置了Flexvolume plugin ,以此與 Kubernetes’ volume controller框架整合。在 Kubernetes v1.8+, 其dynamic Flexvolume plugin discovery 將會發現和初始化Rook的plugin, 但在 Kubernetes的老版本上,手工重啟Kubelet被要求。
建立Rook Cluster
現在Rook operator, agent,和 discover pods已經執行,我們可以建立 Rook cluster。為了重啟之後還能復活叢集,請確定設定了dataDirHostPath
屬性。更多的設定,參考configuring the cluster
.
儲存下面的引數為cluster.yaml
:
apiVersion: v1 kind: Namespace metadata: name: rook-ceph --- apiVersion: ceph.rook.io/v1beta1 kind: Cluster metadata: name: rook-ceph namespace: rook-ceph spec: dataDirHostPath: /var/lib/rook dashboard: enabled: true storage: useAllNodes: true useAllDevices: false config: databaseSizeMB: "1024" journalSizeMB: "1024"
建立cluster:
kubectl create -f cluster.yaml
使用kubectl
列出rook名稱空間下的 pods 。其中,osd pods 的數量依賴於叢集中節點的數量、配置的裝置和目錄的數量。
$ kubectl -n rook-ceph get pod NAME READY STATUS RESTARTS AGE rook-ceph-mgr-a-75cc4ccbf4-t8qtx 1/1 Running 0 24m rook-ceph-mon0-72vx7 1/1 Running 0 25m rook-ceph-mon1-rrpm6 1/1 Running 0 24m rook-ceph-mon2-zff9r 1/1 Running 0 24m rook-ceph-osd-id-0-5fd8cb9747-dvlsb 1/1 Running 0 23m rook-ceph-osd-id-1-84dc695b48-r5mhf 1/1 Running 0 23m rook-ceph-osd-id-2-558878cd84-cnp67 1/1 Running 0 23m rook-ceph-osd-prepare-minikube-wq4f5 0/1 Completed 0 24m
Storage
瞭解Rook提供的三種不同儲存型別,檢視指南:
- Block : 建立塊儲存供pod使用,相當於建立一塊硬碟,然後可以被pod掛載到作業系統。
- Object : 建立object store可以供 Kubernetes cluster 內部或外部使用,是一種類似於Amazon S3的網路儲存服務。
- Shared File System : 建立一個檔案系統,可以在多個 pods 間共享。
Ceph Dashboard,面板
Ceph 有一個dashboard服務,依賴於mgr的指標收集。可以檢視叢集的狀態,參見dashboard guide 。也可以通過安裝整合的Prometheus和Grafana來檢視執行狀態。
- Dashboard目前(0.8)還會遇到一些問題,參見Rook 0.8 安裝及Dashboard的問題和解決
Tools,客戶端工具
我們建立了一個toolbox container,裡面包含全功能的Ceph clients命令列工具,可以用於除錯和診斷Rook叢集的狀態和錯誤。 檢視toolbox readme 獲得安裝和用法的資訊。同時,檢視advanced configuration 文件檢視維護和調優的例子。
Monitoring,狀態監測
每一個 Rook cluster 都有內建的 metrics collectors/exporters用於Prometheus 的監測。瞭解如何設定 monitoring,請檢視monitoring guide 。
結束
測試完集群后,檢視these instructions 可以將其清除。
本文轉自開源中國-Rook-Ceph 分散式儲存系統快速部署