Kubernetes Rook-Ceph: разные пулы для разных случаев использования?
Я снова экспериментирую с rook-ceph в Kubernetes для хранения данных. У меня есть 3 узла, каждый из которых имеет
- локальный SSD-раздел, смонтированный по адресу
/dev/sda2
, и - NAS-том в
/dev/sdb
.
В моем рук-конфиге я использую все устройства, которые автоматически находит и использует оба как OSD. Все идет нормально.
Я бы хотел рассматривать их как два отдельных класса хранилища в Kubernetes: ssd-пул быстрый, но маленький, а NAS-пул медленный, но огромный. Таким образом, я мог прикрепить модули с интенсивным вводом-выводом, такие как базы данных, к классу ssd-storage, в то время как модули с большим размером, такие как файловые серверы, были бы прикреплены к классу NAS-storage.
Поскольку в настоящее время rook-ceph присоединяет все OSD к одному и тому же пулу, я не могу настроить таргетинг на конкретные из них через класс хранения Kubernetes:
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-тома. Мне не нравится это решение из-за недостатка необходимости запуска двух экземпляров rook-ceph-cluster-in в одном kubernetes-кластере.
Есть ли способ заставить rook-ceph разделить SSD- и NAS-хранилища, чтобы они могли независимо использоваться классами хранения Kubernetes?
Обновление 1. Я обнаружил, что могу обновить классы хранилища для устройств вручную:ceph osd crush set-device-class osd.XXX
- единственное, чего мне сейчас не хватает, это того, как нацеливаться на них сkubernetes storageclass
черезceph pool
, в какую (наверное?) OSD надо ставить?
Лучший, Ларс