k8s集群中部署Rook-Ceph高可用集群


先決條件

為確保您有一個准備就緒的 Kubernetes 集群Rook,您可以按照這些說明進行操作。

為了配置 Ceph 存儲集群,至少需要以下本地存儲選項之一:

  • 原始設備(無分區或格式化文件系統)
    • 這需要lvm2在主機上安裝。為了避免這種依賴性,您可以在磁盤上創建一個完整的磁盤分區(見下文)
  • 原始分區(無格式化的文件系統)
  • block模式下存儲類可用的持久卷

部署 Rook Operator

$ git clone --single-branch --branch release-1.7 https://gitee.com/Aaron-23/rook.git
cd rook/cluster/examples/kubernetes/ceph

第一步是部署 Rook 算子。檢查您是否正在使用與您的 Rook 版本相對應的示例 yaml 文件。有關更多選項,請參閱示例文檔。

cd cluster/examples/kubernetes/ceph
kubectl create -f crds.yaml -f common.yaml -f operator.yaml

# verify the rook-ceph-operator is in the `Running` state before proceeding
kubectl -n rook-ceph get pod

修改cluster.yaml文件中storage.node的相關信息,至少需要三個節點

kubectl create -f cluster.yaml

使用kubectl到列表莢的rook-ceph命名空間。一旦它們全部運行,您應該能夠看到以下 pod。osd pod 的數量取決於集群中的節點數量和配置的設備數量。如果cluster.yaml上面沒有修改,預計每個節點會創建一個OSD。

如果rook-ceph-mon,rook-ceph-mgr或rook-ceph-osd不創建豆莢,請參閱 Ceph的常見問題的詳細信息和可能的解決方案。

$ kubectl -n rook-ceph get pod
NAME                                                 READY   STATUS      RESTARTS   AGE
csi-cephfsplugin-provisioner-d77bb49c6-n5tgs         5/5     Running     0          140s
csi-cephfsplugin-provisioner-d77bb49c6-v9rvn         5/5     Running     0          140s
csi-cephfsplugin-rthrp                               3/3     Running     0          140s
csi-rbdplugin-hbsm7                                  3/3     Running     0          140s
csi-rbdplugin-provisioner-5b5cd64fd-nvk6c            6/6     Running     0          140s
csi-rbdplugin-provisioner-5b5cd64fd-q7bxl            6/6     Running     0          140s
rook-ceph-crashcollector-minikube-5b57b7c5d4-hfldl   1/1     Running     0          105s
rook-ceph-mgr-a-64cd7cdf54-j8b5p                     1/1     Running     0          77s
rook-ceph-mon-a-694bb7987d-fp9w7                     1/1     Running     0          105s
rook-ceph-mon-b-856fdd5cb9-5h2qk                     1/1     Running     0          94s
rook-ceph-mon-c-57545897fc-j576h                     1/1     Running     0          85s
rook-ceph-operator-85f5b946bd-s8grz                  1/1     Running     0          92m
rook-ceph-osd-0-6bb747b6c5-lnvb6                     1/1     Running     0          23s
rook-ceph-osd-1-7f67f9646d-44p7v                     1/1     Running     0          24s
rook-ceph-osd-2-6cd4b776ff-v4d68                     1/1     Running     0          25s
rook-ceph-osd-prepare-node1-vx2rz                    0/2     Completed   0          60s
rook-ceph-osd-prepare-node2-ab3fd                    0/2     Completed   0          60s
rook-ceph-osd-prepare-node3-w4xyz                    0/2     Completed   0          60s

驗證集群是否處於健康狀態

使用Rook tools並運行該 ceph status命令。

kubectl create -f toolbox.yaml
kubectl -n rook-ceph rollout status deploy/rook-ceph-tools
$ kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- bash
$ ceph status
[root@rook-ceph-tools-7869bc54f6-67rvk /]# ceph status
  cluster:
    id:     1f70694e-df88-4a1f-b77e-d2dd0ded9977
    health: HEALTH_OK

  services:
    mon: 3 daemons, quorum a,b,c (age 23h)
    mgr: a(active, since 20h), standbys: b
    mds: 1/1 daemons up, 1 hot standby
    osd: 3 osds: 3 up (since 20h), 3 in (since 20h)

  data:
    volumes: 1/1 healthy
    pools:   3 pools, 192 pgs
    objects: 25 objects, 50 KiB
    usage:   107 MiB used, 300 GiB / 300 GiB avail
    pgs:     192 active+clean

  io:
    client:   1.2 KiB/s rd, 2 op/s rd, 0 op/s wr

存儲

有關 Rook 公開的三種存儲類型的演練,請參閱以下指南:

Block:創建由 Pod (RWO) 使用的塊存儲
共享文件系統:創建一個跨多個 Pod 共享的文件系統 (RWX)
Object:創建一個可以在 Kubernetes 集群內部或外部訪問的對象存儲

創建共享文件系統

kubectl create -f filesystem.yaml

Rook operator將創建啟動服務所需的所有池和其他資源。這可能需要一分鍾才能完成。

# To confirm the filesystem is configured, wait for the mds pods to start
kubectl -n rook-ceph get pod -l app=rook-ceph-mds
NAME                                      READY     STATUS    RESTARTS   AGE
rook-ceph-mds-myfs-7d59fdfcf4-h8kw9       1/1       Running   0          12s
rook-ceph-mds-myfs-7d59fdfcf4-kgkjp       1/1       Running   0          12s

要查看文件系統的詳細狀態,請啟動並連接到Rook tools。將ceph status為該mds服務顯示一個新行。在此示例中,有一個 MDS 的活動實例已啟動,其中一個 MDS 實例處於standby-replay模式以備故障轉移。

$ ceph status
 ...
 services:
   mds: myfs-1/1/1 up {[myfs:0]=mzw58b=up:active}, 1 up:standby-replay

供應存儲

在 Rook 開始供應存儲之前,需要根據文件系統創建一個 StorageClass。這是 Kubernetes 與 CSI 驅動程序互操作以創建持久卷所必需的。

注意:此示例使用 CSI 驅動程序,它是 K8s 1.13 和更新版本的首選驅動程序。示例可以在CSI CephFS目錄中找到。有關使用 flex 驅動程序(K8s 1.12 及更早版本需要)的卷的示例,請參閱下面的Flex 驅動程序部分。

kubectl create -f storageclass.yaml

存儲配額

重要提示:CephFS CSI 驅動程序使用配額來強制執行請求的 PVC 大小。只有較新的內核支持 CephFS 配額(內核版本至少為 4.17)。如果您需要強制執行配額並且內核驅動程序不支持它,您可以禁用內核驅動程序並使用 FUSE 客戶端。這可以通過CSI_FORCE_CEPHFS_KERNEL_CLIENT: false 在操作員部署 ( operator.yaml) 中設置來完成。但是,重要的是要知道,當 FUSE 客戶端啟用時,存在一個問題,即在升級過程中應用程序 pod 將與掛載斷開連接,需要重新啟動。有關 更多詳細信息,請參閱升級指南。

dashboard

獲取svc,在平台上代理

kubectl -n rook-ceph get service rook-ceph-mgr-dashboard

連接到儀表板后,您需要登錄以進行安全訪問。Rook 創建一個默認用戶, admin並rook-ceph-dashboard-password在 Rook Ceph 集群運行的命名空間中生成一個名為的秘密。要檢索生成的密碼,您可以運行以下命令:

kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM