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

Rook/Ceph最新状況 in Japan Rook Meetup #3

Rook/Ceph最新状況 in Japan Rook Meetup #3

Satoru Takeuchi

July 03, 2020
Tweet

More Decks by Satoru Takeuchi

Other Decks in Technology

Transcript

  1. デバイス OSD on device ユーザが指定 OSD on PVC PVC template

    (Block Volume) Cephクラスタの カスタムリソース Kubernetes Linux Cephクラスタの カスタムリソース OSDの設定 CSIドライバ ユーザはここを 気にしなくていい ユーザが指定 5 2種類のOSD作成方法 OSDの設定 ボリュームを作成
  2. OSD on device ▌ノード上のデバイス名を直接指定 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 • クラスタ管理者にハードウェア構成の知識が必要 • 大規模になるほどマニフェストを書くのがツラい
  3. • クラスタ管理者はOSD podのありかを気にしなくてよい OSD on PVC ▌CSIドライバ提供のraw block volumeを使う spec:

    … storageClassDeviceSets: - name: set0 count: 2 … volumeClaimTemplates: - metadata: name: data spec: resources: requests: storage: 10Gi storageClassName: my-class 7 PVC set0-1 OSD OSD Pod PVC set0-2 OSD OSD Pod • ボリュームの提供方法も気にしなくてよい
  4. OSD on PVCの理想的な状態 8 PVC PVC OSD OSD OSD Pod

    OSD Pod CSIドライバが管理 Dynamic provisioningで 自動作成 disk disk disk disk disk TopoLVM: LVMベースのローカルディスク用CSIドライバ PV PV
  5. ▌OSD on Deviceのかわりに使える 自分でPVを作るという手段もある 9 PVC PVC OSD OSD OSD

    Pod OSD Pod CSIドライバが管理 static provisioningで 手動作成 disk disk disk disk disk PV PV
  6. OSD Podのスケジューリング with TSC 15 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にスケジュール
  7. 背景 ▌システムの運用中にハード構成は変わる ⚫ラック/ノード/デバイスの追加/削除/故障 ▌TSCで強い制約を付けるのは現実的ではない ⚫例: Node間のOSD pod数の差 <= 1 21

    rack0 node0 node1 disk0 disk1 disk2 disk0 disk1 disk2 時間が経つと… rack0 node0 node1 disk0 disk1 disk2 disk0 disk1 disk2 node2 disk0 disk1 disk2 追加 このディスクは上記制約が あると使えない
  8. 辛い現実 24 https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/#api • TSCの制約を満たせないとき: • DoNotSchedule (デフォルト): Podをスケジュールさせない •

    ScheduleAnyway: できる限り差分を最小化するようスケジュール 実際の動き • DoNotSchedule (デフォルト): TSCの制約を満たすようスケジュール 満たせなければスケジュールしない • ScheduleAnyway: TSCの制約を満たそうという努力を一切しない • Pod数の偏りをスコアリングの参考にするだけ • 偏りが大きくてもスコアへの影響は少ない • 例えばCPU負荷が高いnodeにはまずOSD Podは作られない コレジャナイ!
  9. v1.4開発への主な貢献者 コミット数 名前 所属 備考 176 Sébastien Han Red Hat

    メンテナ 151 Travis Nielsen Red Hat メンテナ 36 Satoru Takeuchi サイボウズ レビューア 26 Madhu Rajanna Red Hat レビューア、ceph-csiメンテナ 12 Jiffin Tony Thottan Red Hat メンテナ 7 Umanga Chapagain Red Hat 7 n.Fraison 不明 7 Dmitry Yusupov Nexenta EdgeFSメンテナ 7 Alexander Trost Cloudical 5 Binoue サイボウズ
  10. 参考リンク ▌ストレージオーケストレーターRookへのサイボウズのコミット方針 ⚫ https://blog.cybozu.io/entry/2019/12/03/114746 ▌賢く「散らす」ための Topology Spread Constraints ⚫ https://speakerdeck.com/ytaka23/kubernetes-meetup-tokyo-25th

    ▌Scheduling Profileが実現するPod配置戦略の最前線 ⚫ https://speakerdeck.com/ytaka23/infra-study-meetup-2nd ▌Kubernetesでローカルストレージを有効活用しよう ⚫ https://blog.cybozu.io/entry/2019/11/08/090000 37