Kubernetes Rook-Ceph: 다양한 사용 사례에 맞는 다양한 풀?

Kubernetes Rook-Ceph: 다양한 사용 사례에 맞는 다양한 풀?

다시 kubernetes에서 저장을 위해 rook-ceph를 실험하고 있습니다. 3개의 노드가 있는데 각 노드에는

  • /dev/sda2에 마운트된 로컬 SSD 파티션
  • 의 NAS 볼륨 /dev/sdb.

내 루크 구성에서는 두 장치를 자동으로 찾아 OSD로 사용하는 모든 장치를 사용합니다. 여태까지는 그런대로 잘됐다.

내가 하고 싶은 것은 이들을 쿠버네티스에서 두 개의 별도 스토리지 클래스로 처리하는 것입니다. 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)

가능한 솔루션을 찾았습니다. 두 개의 개별 rook-ceph 인스턴스를 deviceFilter. 하나의 kubernetes-cluster에서 두 개의 rook-ceph-cluster-instance를 실행해야 한다는 단점 때문에 이 솔루션이 마음에 들지 않습니다.

SSD 및 NAS 스토리지를 분리하여 kubernetes 스토리지 클래스에서 독립적으로 타겟팅할 수 있도록 rook-ceph를 얻을 수 있는 방법이 있습니까?


업데이트 1:장치의 저장소 클래스를 수동으로 업데이트할 수 있다는 것을 알았습니다. - 지금 내가 놓치고 있는 유일한 것은 a를 통해 ceph osd crush set-device-class osd.XXX장치를 대상으로 지정하는 방법입니다 . 여기에 OSD를 넣어야 합니까?kubernetes storageclassceph pool

최고야, 라스

답변1

@LarsKumbier cephcluster를 생성하여 OSD 세트에 대해 deviceClasses를 지정할 수 있습니다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 클러스터가 생성됩니까?

관련 정보