Kubernetes Rook-Ceph: ユースケースごとに異なるプール?

Kubernetes Rook-Ceph: ユースケースごとに異なるプール?

ストレージ用に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 storageclassceph 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 クラスターを作成する必要がなくなりますか?

関連情報