
Estou experimentando rook-ceph no kubernetes para armazenamento novamente. Eu tenho 3 nós, cada um com
- uma partição SSD local montada em
/dev/sda2
e - um volume NAS em
/dev/sdb
.
No meu rook-config, eu uso todos os dispositivos, que automaticamente encontra e usa ambos como OSDs. Até agora tudo bem.
O que eu gostaria de fazer é tratá-los como duas classes de armazenamento separadas no kubernetes - o pool SSD é rápido, mas pequeno, enquanto o pool NAS é lento, mas enorme. Dessa forma, eu poderia anexar pods com uso intensivo de IO, como bancos de dados, à classe de armazenamento SSD, enquanto pods de tamanho pesado, como servidores de arquivos, seriam anexados à classe de armazenamento NAS.
Como o rook-ceph atualmente anexa todos os OSDs ao mesmo pool, não posso direcionar aqueles específicos por meio de uma classe de armazenamento do 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)
Eu encontrei uma solução possível, onde executo duas instâncias rook-ceph separadas com um deviceFilter
, para que um rook-ceph-cluster use apenas os SSDs, enquanto o outro use apenas os volumes NAS. Não gosto desta solução devido à desvantagem de ter que executar duas instâncias rook-ceph-cluster em um cluster kubernetes.
Existe uma maneira de fazer com que o rook-ceph separe os armazenamentos SSD e NAS, para que possam ser direcionados de forma independente pelas classes de armazenamento do Kubernetes?
Atualização 1:Descobri que posso atualizar manualmente as classes de armazenamento dos dispositivos: ceph osd crush set-device-class osd.XXX
- a única coisa que me falta agora é como direcioná-los a partir de kubernetes storageclass
a ceph pool
, em que (eu acho?) os OSDs devem ser colocados?
Atenciosamente, Lars
Responder1
@LarsKumbier Você pode criar cephcluster para especificar deviceClasses para conjunto de OSD'shttps://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 e usar essas classes de dispositivos para pools cephfs e rbd e criar uma classe de armazenamento para apontar para o pool rbd e os pools de dados cephfs? isso elimina a criação de vários clusters ceph?