Kubernetes Rook-Ceph:针对不同用例使用不同的池?

Kubernetes Rook-Ceph:针对不同用例使用不同的池?

我正在 Kubernetes 上再次尝试使用 rook-ceph 进行存储。我有 3 个节点,每个节点都有

  • 安装在 的本地 SSD 分区/dev/sda2,以及
  • 位于 的 NAS 卷/dev/sdb

在我的 rook-config 中,我使用所有设备,它会自动查找并使用它们作为 OSD。到目前为止一切顺利。

我想做的是将它们视为 Kubernetes 中的两个独立存储类 - ssd-pool 速度快但体积小,而 NAS-pool 速度慢但体积大。这样,我可以将 IO 密集型 pod(如数据库)附加到 ssd-storageclass 上,而将大小密集型 pod(如文件服务器)附加到 NAS-storageclass 上。

由于 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 集群仅使用 SSD,而另一个仅使用 NAS 卷。我不喜欢这个解决方案,因为它的缺点是必须在一个 kubernetes 集群中运行两个 rook-ceph 集群实例。

有没有办法让 rook-ceph 分离 SSD 和 NAS 存储,以便它们可以通过 kubernetes 存储类独立定位?


更新 1:我发现我可以手动更新设备的存储类别:ceph osd crush set-device-class osd.XXX- 我现在唯一缺少的是如何通过 a 来定位它们kubernetes storageclassceph pool其中(我猜?)OSD 必须放在其中?

最好的,拉尔斯

答案1

@LarsKumbier 您可以创建 cephcluster 来为 OSD 集指定设备类https://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 集群?

相关内容