
ストレージ用にKubernetesでrook-cephを再度試しています。3つのノードがあり、それぞれに
- にマウントされたローカルSSDパーティション
/dev/sda2
、および - NAS ボリューム
/dev/sdb
。
私の rook-config では、すべてのデバイスを使用しており、両方を自動的に検出して OSD として使用しています。ここまでは順調です。
私がやりたいのは、Kubernetes でこれらを 2 つの別々のストレージ クラスとして扱うことです。つまり、SSD プールは高速ですが小さく、NAS プールは低速ですが巨大です。こうすることで、データベースなどの IO 集約型のポッドを SSD ストレージ クラスに接続し、ファイル サーバーなどのサイズの大きいポッドを 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)
可能な解決策を見つけました。それは、 で 2 つの別々の rook-ceph インスタンスを実行しdeviceFilter
、1 つの rook-ceph クラスターが SSD のみを使用し、もう 1 つが NAS ボリュームのみを使用するというものです。1 つの kubernetes クラスターで 2 つの rook-ceph クラスター インスタンスを実行する必要があるという欠点があるため、この解決策は気に入りません。
rook-ceph で SSD ストレージと NAS ストレージを分離し、Kubernetes ストレージ クラスで個別にターゲットできるようにする方法はありますか?
アップデート1:デバイスのストレージ クラスを手動で更新できることが分かりました。 - 現在不足しているのは、 から を介してceph osd crush set-device-class osd.XXX
それらをターゲットにする方法だけです。そこに (おそらく) OSD を配置する必要があります。kubernetes storageclass
ceph pool
よろしく、ラース
答え1
@LarsKumbier OSDのセットのデバイスクラスを指定するためにcephclusterを作成できますhttps://github.com/rook/rook/blob/f70b687a6077877e29ab02b06a881ed2d65c3c78/Documentation/CRDs/Cluster/ceph-cluster-crd.md#osd-configuration-settings ストレージクラスデバイスセット そして、そのデバイスクラスを cephfs および rbd プールに使用し、rbd プールと cephfs データ プールを指すストレージクラスを作成しますか? これにより、複数の ceph クラスターを作成する必要がなくなりますか?