
我正在 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 storageclass
via 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 叢集嗎?