Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rook/Ceph upstream最新状況

Rook/Ceph upstream最新状況

本スライド公開時点(2020/3/27)でのRook最新版v1.2におけるRook/Cephの新機能、およびv1.3の開発状況について紹介しています。

Japan Rook Meetup #2の発表資料です。

Satoru Takeuchi

March 27, 2020
Tweet

More Decks by Satoru Takeuchi

Other Decks in Technology

Transcript

  1. デバイス 従来の方法 ユーザが 指定 OSD on PVC(v1.1~) PVC template (Block

    Volume) Rookの クラスタリソース Kubernetes Linux Rookの クラスタリソース OSDの設定 CSIドライバ ユーザはここを 気にしなくていい ユーザが 指定 5 OSD作成方法 OSDの設定 PVを作成
  2. 従来の方法 ▌ノード上のデバイス名を直接指定 apiVersion: ceph.rook.io/v1 kind: CephCluster … spec: … storage:

    … nodes: - name: “node0” devices: - name: "sdb" - name: “node1“ deviceFilter: "^sd[^a]“ sda sdb sdc 6 node0 node1 sda sdb sdc OSD OSD OSD OSD Pod OSD Pod OSD Pod • クラスタ管理者にハードウェア構成の知識が必要 • K8sの枠外で自力構成
  3. クラスタ管理者はOSD podがどこにあるかを 気にしなくていい OSD on PVC ▌CSIドライバ提供のblock volumeを使う spec: …

    storageClassDeviceSets: - name: set0 count: 3 … volumeClaimTemplates: - metadata: name: data spec: resources: requests: storage: 10Gi storageClassName: my-class 7 PVC Set0-0 PVC set0-1 OSD OSD OSD Pod OSD Pod PVC set0-2 OSD OSD Pod 同、PVCの提供方法を気にしなくてよい
  4. OSD on PVCでLVをサポート ▌OSD on LV-backed PVC(サイボウズ作) ▌サイボウズのOSD on PVCのユースケース

    ⚫ローカルのNVMe SSD上にOSDを作りたい ⚫管理コスト削減のためDynamic provisioningを使いたい 9
  5. 前記ユースケースの理想的な実現 10 NVMe SSD NVMe SSD PVC PVC PVC OSD

    OSD アプリAのPod OSD Pod OSD Pod CSIドライバが管理 Dynamic provisioning
  6. 解決方法: 要件を満たすドライバを自作 12 NVMe SSD NVMe SSD Volume Group Logical

    Volume Logical Volume Logical Volume PVC PVC PVC OSD OSD アプリAのPod OSD Pod OSD Pod サイボウズ自作 CSIドライバ TopoLVMが管理 Dynamic provisioning
  7. デバイス 従来の方法 ユーザが 指定 OSD on PVC PVC template (Block

    Volume) Rookの クラスタリソース Kubernetes Linux Rookの クラスタリソース OSDの設定 OSD on PVC(TopoLVM) 物理デバイス 物理デバイス 物理デバイス Volume Group Logical Volume Logical Volume Logical Volume PVC template (Block Volume) Rookの クラスタリソース TopoLVM CSIドライバ ユーザはここを 気にしなくていい ユーザが 指定 ユーザが 指定 13 OSDの作成方法(TopoLVM含む) OSDの設定 OSDの設定 PVを作成 PVを作成
  8. 従来方式でudev persistent nameをサポート ▌V1.1以前 ⚫/dev/直下のデバイスのみ指定可能 ⚫Udevのpersistent device nameが使えなかった ⚫ /dev/直下のデバイス名は変わりうるのでデータ破壊の危険あり

    ▌V1.2以降 ⚫新機能devicePathFilter(サイボウズ作) ⚫ 絶対パスを使ったデバイスを指定可能 ⚫Udev persisten device name使用可能 ⚫ 例: devicePathFilter: /dev/disk/by-path/pci-0:1:2:3-scsi-1
  9. 機能使用時のOSD Podのスケジュール 22 rack0 node0 OSD Pod OSD Pod node1

    OSD Pod OSD Pod rack1 node2 OSD Pod OSD Pod node3 OSD Pod 新規OSD Pod 1. rack0のOSD Pod数 > rack1のOSD Pod数 →rack1にスケジュール 2. node2のOSD Pod数 > node3のOSD Pod数 →node3にスケジュール
  10. 参考: V1.3開発における主な貢献者 コミット数 名前 備考 188 Sébastien Han@Red Hat メンテナ

    170 Travis Nielsen@Red Hat メンテナ 23 Blaine Gardner@SUSE メンテナ 17 Madhu Rajanna 12 Alexander Trost メンテナ 10 Nizamudeen@Red Hat 9 Dmitry Yusupov@Nexenta NexentaはEdgeFs開発元 8 Satoru Takeuchi@サイボウズ 8 Ashish Ranjan@Red Hat 7 Juan Miguel Olmo Martínez@Red Hat