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

Kube Con EU 2021 recap ~ Rook Intro & Ceph Deep Dive

Kube Con EU 2021 recap ~ Rook Intro & Ceph Deep Dive

以下イベントの発表資料です。
https://k8sjp.connpass.com/event/211349/

842515eaf8fbb2dfcc75197e7797dc15?s=128

Satoru Takeuchi

May 20, 2021
Tweet

Transcript

  1. KubeCon EU 2021 Recap ~Rook Intro & Ceph Deep Dive~

    sat@Cybozu May 20th, 2021 1
  2. すすめかた 1. セッション紹介 2. サイボウズのRook/Cephクラスタ 2

  3. セッション紹介 3

  4. 4

  5. 5

  6. 6

  7. 7

  8. 8 • 📝コード全体のうち2/3以上がCephのもの • コミットもほとんどCephに対するもの • 📝 最新版(v1.6)でメンテされていない ストレージプロバイダが3つ削除された

  9. 9

  10. Cephのアーキテクチャ 10 アプリ ストレージプール Cephクラスタ node disk disk node disk

    disk node disk disk … ブロックデバイス オブジェクト ブロックデバイス ブロックストレージ オブジェクト ファイルシステム アプリ アプリ ブロックデバイス ブロックデバイス オブジェクトストレージ OSD OSD OSD OSD OSD OSD Cephのデータ領域 &管理デーモン
  11. K8sクラスタ Rookのアーキテクチャ 11 アプリ ストレージプール Cephクラスタ node disk disk node

    disk disk node disk disk … ブロックデバイス オブジェクト ブロックデバイス ブロックストレージ オブジェクト ファイルシステム アプリ アプリ(Pod) ブロックデバイス ブロックデバイス オブジェクトストレージ OSD pod OSD OSD pod OSD OSD pod OSD OSD pod OSD OSD pod OSD OSD pod OSD Ceph-csiドライバ lib-bucket-provisioner Rook PV,PVC OB,OBC
  12. K8sクラスタ Rookのアーキテクチャ 12 アプリ ストレージプール Cephクラスタ node disk disk node

    disk disk node disk disk … ブロックデバイス オブジェクト ブロックデバイス ブロックストレージ オブジェクト ファイルシステム アプリ アプリ(Pod) ブロックデバイス ブロックデバイス オブジェクトストレージ OSD pod OSD OSD pod OSD OSD pod OSD OSD pod OSD OSD pod OSD OSD pod OSD Ceph-csiドライバ lib-bucket-provisioner Rook PV,PVC OB,OBC 📝 K8s v1.22 + Rook v1.7(次期安定版)では Container Objest Storage Interface(COSI)を サポート予定
  13. 13

  14. 14

  15. 15 1. ユーザがCountを増やす 2. RookがOSD PodとPVCを作成 3. RookがPVC上にOSDを作る

  16. PVC-based clusterの課題 ▌K8sでは通常podのスケジュール先は不定 ▌例: 2node, 4disk, OSD数2, データのレプリカ数2 16 node0

    disk disk 望ましくない配置(node0障害で全データ喪失) 望ましい配置(1node失ってもデータは残る) OSD Pod PVC OSD OSD Pod PVC OSD node1 disk disk node1 disk disk OSD Pod PVC OSD node0 disk disk OSD Pod PVC OSD
  17. TopologySpreadConstraints(TSC) ▌Kubernetesの機能 ▌所定のドメイン間でPodを均等分散配置 17 apiVersion: v1 kind: Pod metadata: name:

    mypod spec: topologySpreadConstraints: - topologyKey: topology.Kubernetes.io/zone Podを分散させるべきドメイン apiVersion: v1 kind: Node metadata: name: mynode topology.Kubernetes.io/zone: myrack Nodeごとにドメインを設定
  18. TSCを使ったOSDの均等分散配置 ▌実現までの流れ 1. TSCによってOSD Podをドメイン間で均等分散配置 2. OSD Podが使うPVC、それに対応するOSDも同様 ▌他のストレージ on

    K8sにも使える技法 18 node2 disk disk OSD Pod PVC OSD node1 disk disk OSD Pod PVC OSD Kube-scheduler TSC
  19. サイボウズのRook/Cephクラスタ 19

  20. なぜRook/Cephなのか ▌機能要件を全て満たす ⚫スケーラブルな分散ストレージ ⚫ブロックストレージ、オブジェクトストレージ ⚫ラック障害時に運用継続可能、データロストなし ⚫宣言的に管理可能 ▌自分達で機能追加可能、有事の速やかな修正が可能 ⚫RookもCephもOSSなので、自前運用なら可能 ⚫📝 ストレージ障害はお客様及び自社の損害が大きい&取返し不可能

    20
  21. 社内Rook/Cephクラスタ開発方法 1. 検証&構築&実機上で運用 2. 課題が見つかればissue発行&必要あれば自分達で直す 3. 1に戻る 21

  22. これまでのRookへの貢献 ▌TSCのサポート ▌データ破壊問題の解決 ▌XFS on Cephブロックストレージ使用時の 問題検出&デフォルトfsの変更 ▌Disaster recovery手順改善 ▌バグ修正&テスト追加

    22
  23. 完成予想図 23 K8sクラスタ リモート K8sクラスタ * 左図と 同様の構成 レプリケーション Rook/CephクラスタA

    Rook/CephクラスタB アプリ アプリ アプリ オブジェクト ストレージ ブロック ストレージ ブロック ストレージ HDD node node SSD HDD HDD SSD NVMe SSD
  24. 現状 24 K8sクラスタ レプリケーション 監視ツール& ログ基盤 Rook/CephクラスタA Rook/CephクラスタB アプリ アプリ

    アプリ オブジェクト ストレージ ブロック ストレージ ブロック ストレージ 現行インフラ リモート K8sクラスタ * 左図と 同様の構成 HDD node node SSD HDD HDD SSD NVMe SSD
  25. 成熟度 ▌ユーザは制限付きでデータを置いてよい ⚫性能を気にしない ⚫長時間ダウンしても問題ない ▌毎週全サーバを順番に再起動しているが、 最近は問題が起きていない 25

  26. 今後 ▌性能チューニング&可用性を高める ▌機能追加 ⚫リモートレプリケーション ⚫スナップショット、バックアップ/リストア ▌既存データを(徐々に)移行 26

  27. 27 おわり ▌セッションのページ(スライド引用元) ⚫ https://kccnceu2021.sched.com/event/iE6R ▌Production-grade Deployment of PVC-based Rook/Ceph

    Cluster ⚫ https://blog.kintone.io/entry/2020/09/18/175030