k8s 集羣部署rook-ceph存儲系統及使用

1、Rook 、ceph簡介


Ceph分佈式存儲系統

Ceph是一種高度可擴展的分佈式存儲解決方案,提供對象、文件和塊存儲。在每一個存儲節點上,您將找到Ceph存儲對象的文件系統和Ceph OSD(對象存儲守護程序)進程。在Ceph集羣上,您還能夠找到Ceph MON(監控)守護程序,它們確保Ceph集羣保持高可用性。git

Rook
Rook 是一個開源的cloud-native storage編排, 提供平臺和框架;爲各類存儲解決方案提供平臺、框架和支持,以便與雲原生環境本地集成。
Rook 將存儲軟件轉變爲自我管理、自我擴展和自我修復的存儲服務,它經過自動化部署、引導、配置、置備、擴展、升級、遷移、災難恢復、監控和資源管理來實現此目的。
Rook 使用底層雲本機容器管理、調度和編排平臺提供的工具來實現它自身的功能。
Rook 目前支持Ceph、NFS、Minio Object Store和CockroachDB。
k8s 集羣部署rook-ceph存儲系統及使用github


2、前期準備

1.已有一個能夠正常跑應用的k8s集羣json

2.在集羣中至少有三個節點可用,知足ceph高可用要求,而且服務器具有一塊未格式化未分區的硬盤。api

3.rook-ceph項目地址:https://github.com/rook/rookbash

https://github.com/rook/rook/blob/master/Documentation/ceph-quickstart.md 部署文檔服務器

4.rook使用存儲方式併發

rook默認使用全部節點的全部資源,rook operator自動在全部節點上啓動OSD設備,Rook會用以下標準監控並發現可用設備:app

  • 設備沒有分區
  • 設備沒有格式化的文件系統
  • Rook不會使用不知足以上標準的設備。另外也能夠經過修改配置文件,指定哪些節點或者設備會被使用。

3、部署Rook Operator

須要用到的鏡像,部署服務前首先得將鏡像導入
rook/ceph:v1.4.1

ceph/ceph:v15.2.4

quay.io/cephcsi/cephcsi:v3.1.0

#github clone項目部署文件,能夠指定不一樣的版本,若是不指定默認則克隆Master分支測試1.4.1版本pv能夠動態建立
git clone --single-branch --branch v1.4.1 https://github.com/rook/rook.git
#移動到項目目錄下
cd rook/cluster/examples/kubernetes/ceph

#全部的pod都會在rook-ceph命名空間下建立
kubectl create -f common.yaml

#部署Rook操做員
kubectl create -f operator.yaml

#建立Rook Ceph集羣
kubectl create -f cluster.yaml

#部署Ceph toolbox 命令行工具
#默認啓動的Ceph集羣,是開啓Ceph認證的,這樣你登錄Ceph組件所在的Pod裏,是無法去獲取集羣狀態,以及執行CLI命令,這時須要部署Ceph toolbox,命令以下
kubectl create -f toolbox.yaml

#進入ceph tool容器
kubectl exec -it pod/rook-ceph-tools-545f46bbc4-qtpfl -n rook-ceph bash

#查看ceph狀態
ceph status

#至此已經部署完成了,查看rook-ceph命名空間下的pod,首先看pod的狀況,有operator、mgr、agent、discover、mon、osd、tools,且osd-prepare是completed的狀態,其它是running的狀態:

k8s 集羣部署rook-ceph存儲系統及使用

#暴露方式有多種選擇適合本身的一個便可
https://github.com/rook/rook/blob/master/Documentation/ceph-dashboard.md

#執行完cluster.yaml後rook會自動幫咱們建立ceph的Dashboard,pod及service以下圖,默認dashboard爲ClusterIP,須要咱們改成NodePort對外暴露服務。
kubectl  edit svc rook-ceph-mgr-dashboard -n rook-ceph

k8s 集羣部署rook-ceph存儲系統及使用
k8s 集羣部署rook-ceph存儲系統及使用


4、訪問Web Ceph Dashboard

k8s 集羣部署rook-ceph存儲系統及使用

訪問地址,注意是https,http會訪問不成功
https://192.168.10.215:32111/#/dashboard

默認用戶名爲
admin

密碼獲取方式執行以下命令
kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo

Ceph Dashboard首頁,點擊首頁小齒輪修改admin的密碼

k8s 集羣部署rook-ceph存儲系統及使用

5、ceph分佈式存儲使用

  • RBD
1.安裝rbd插件storageclass
 kubectl  apply -f /opt/k8s-install-tool/rook-ceph/rook/cluster/examples/kubernetes/ceph/csi/rbd/storageclass.yaml
2.查看建立rbd結果
kubectl  get storageclasses.storage.k8s.io

k8s 集羣部署rook-ceph存儲系統及使用

3.建立pvc指定storageClassName爲rook-ceph-block框架

k8s 集羣部署rook-ceph存儲系統及使用

  • CEPHFS安裝使用
1.安裝cephfs元數據存儲池及插件storageclass

kubectl  apply -f /opt/k8s-install-tool/rook-ceph/rook/cluster/examples/kubernetes/ceph/filesystem.yaml
kubectl  apply -f /opt/k8s-install-tool/rook-ceph/rook/cluster/examples/kubernetes/ceph/csi/cephfs/storageclass.yaml

2.以pod的形式部署在rook-ceph命名空間中,會有兩個pod。
kubectl -n rook-ceph get pod -l app=rook-ceph-mds

NAME                                    READY   STATUS    RESTARTS   AGE
rook-ceph-mds-myfs-a-6b9cc74d4d-tgvv6   1/1     Running   0          14m
rook-ceph-mds-myfs-b-6b885f5884-qw8tk   1/1     Running   0          14m

3.查看建立rbd結果
kubectl  get storageclasses.storage.k8s.io

NAME              PROVISIONER                     RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
rook-ceph-block   rook-ceph.rbd.csi.ceph.com      Delete          Immediate           true                   18h
rook-cephfs       rook-ceph.cephfs.csi.ceph.com   Delete          Immediate           true                   13m

4.cephfs使用和rbd同樣指定storageClassName的值便可,須要注意的是rbd只支持ReadWriteOnce,cephfs能夠支持ReadWriteMany。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  namespace: default
  name: "airflow-service-log-pvc"
spec:
  accessModes:
    #- ReadWriteOnce
    - ReadWriteMany
  resources:
    requests:
      storage: 2Gi
  storageClassName: rook-cephfs

知識點:

pv的三種訪問模式
ReadWriteOnce,RWO,僅可被單個節點讀寫掛載
ReadOnlyMany,ROX,可被多節點同時只讀掛載
ReadWriteMany,RWX,可被多節點同時讀寫掛載

pv回收策略
Retain,保持不動,由管理員手動回收
Recycle,空間回收,刪除全部文件,僅NFS和hostPath支持
Delete,刪除存儲卷,僅部分雲端存儲支持
相關文章
相關標籤/搜索