Kubernetes Rook-Ceph:針對不同用例的不同池?

Kubernetes Rook-Ceph:針對不同用例的不同池?

我正在 kubernetes 上再次嘗試使用 rook-ceph 進行儲存。我有 3 個節點,每個節點都有

  • 安裝在 的本機 SSD 分割區/dev/sda2,以及
  • NAS 卷位於/dev/sdb.

在我的 rook-config 中,我使用所有設備,它會自動尋找並使用它們作為 OSD。到目前為止,一切都很好。

我想做的是將它們視為 kubernetes 中的兩個獨立的儲存類別 - ssd 池速度快但小,而 NAS 池速度慢但巨大。這樣,我可以將資料庫等 IO 密集型 Pod 附加到 ssd 儲存類,而檔案伺服器等大型 pod 則附加到 NAS 儲存類別。

由於 rook-ceph 目前將所有 OSD 附加到同一個池,因此我無法透過 kubernetes 儲存類別定位特定的 OSD:

bash-4.4$ ceph osd tree
ID  CLASS  WEIGHT   TYPE NAME               STATUS  REWEIGHT  PRI-AFF
-1         0.82942  root default
-7         0.27647      host k8s-storage-1
 1    ssd  0.17879          osd.1               up   1.00000  1.00000
 5    ssd  0.09769          osd.5               up   1.00000  1.00000
-3         0.27647      host k8s-storage-2
 2    ssd  0.17879          osd.2               up   1.00000  1.00000
 3    ssd  0.09769          osd.3               up   1.00000  1.00000
-5         0.27647      host k8s-storage-3
 0    ssd  0.17879          osd.0               up   1.00000  1.00000
 4    ssd  0.09769          osd.4               up   1.00000  1.00000

bash-4.4$ ceph osd status
ID  HOST            USED  AVAIL  WR OPS  WR DATA  RD OPS  RD DATA  STATE
 0  k8s-storage-3   196M   182G      0        0       1       16   exists,up¹
 1  k8s-storage-1   374M   182G      0        0       0        0   exists,up¹
 2  k8s-storage-2   261M   182G      0        0       1       90   exists,up¹
 3  k8s-storage-2   121M  99.8G      0        0       0        0   exists,up²
 4  k8s-storage-3   187M  99.8G      0        0       0        0   exists,up²
 5  k8s-storage-1  85.3M  99.9G      0        0       0        0   exists,up²

¹local SSD storage
²remote NAS storage (it's just a 100gb for testing purposes)

我確實找到了一種可能的解決方案,我使用 運行兩個單獨的 rook-ceph 實例deviceFilter,這樣一個 rook-ceph-cluster 僅使用 SSD,而另一個僅使用 NAS 卷。我不喜歡這種解決方案,因為它的缺點是必須在一個 kubernetes 叢集中運行兩個 rook-ceph-cluster-instances。

有沒有辦法讓 rook-ceph 分離 SSD 和 NAS 存儲,以便 kubernetes 存儲類可以獨立定位它們?


更新1:我發現我可以手動更新設備的儲存類別:ceph osd crush set-device-class osd.XXX- 我現在唯一缺少的是如何從 a kubernetes storageclassvia a定位它們ceph pool,其中(我猜?)必須放置 OSD?

最好的,拉爾斯

答案1

@LarsKumbier您可以建立 cephcluster 來為一組 OSD 指定 deviceClasseshttps://github.com/rook/rook/blob/f70b687a6077877e29ab02b06a881ed2d65c3c78/Documentation/CRDs/Cluster/ceph-cluster-crd.md#osd-configuration-settings https://github.com/rook/rook/blob/f70b687a6077877e29ab02b06a881ed2d65c3c78/Documentation/CRDs/Cluster/ceph-cluster-crd.md#storage-class-device-sets 並將該設備類別用於 cephfs 和 rbd 池並建立一個儲存類別以指向 rbd 池和 cephfs 資料池?這不需要建立多個 ceph 叢集嗎?

相關內容