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/

Satoru Takeuchi
PRO

May 20, 2021
Tweet

More Decks by Satoru Takeuchi

Other Decks in Technology

Transcript

  1. KubeCon EU 2021 Recap
    ~Rook Intro & Ceph Deep Dive~
    sat@Cybozu
    May 20th, 2021
    1

    View Slide

  2. すすめかた
    1. セッション紹介
    2. サイボウズのRook/Cephクラスタ
    2

    View Slide

  3. セッション紹介
    3

    View Slide

  4. 4

    View Slide

  5. 5

    View Slide

  6. 6

    View Slide

  7. 7

    View Slide

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

    View Slide

  9. 9

    View Slide

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

    ブロックデバイス オブジェクト
    ブロックデバイス
    ブロックストレージ オブジェクト
    ファイルシステム
    アプリ
    アプリ
    ブロックデバイス
    ブロックデバイス
    オブジェクトストレージ
    OSD OSD OSD OSD OSD OSD
    Cephのデータ領域
    &管理デーモン

    View Slide

  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

    View Slide

  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)を
    サポート予定

    View Slide

  13. 13

    View Slide

  14. 14

    View Slide

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

    View Slide

  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

    View Slide

  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ごとにドメインを設定

    View Slide

  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

    View Slide

  19. サイボウズのRook/Cephクラスタ
    19

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  23. 完成予想図
    23
    K8sクラスタ リモート
    K8sクラスタ
    * 左図と
    同様の構成
    レプリケーション
    Rook/CephクラスタA Rook/CephクラスタB
    アプリ アプリ アプリ
    オブジェクト
    ストレージ
    ブロック
    ストレージ
    ブロック
    ストレージ
    HDD
    node node SSD
    HDD
    HDD SSD
    NVMe SSD

    View Slide

  24. 現状
    24
    K8sクラスタ
    レプリケーション
    監視ツール&
    ログ基盤
    Rook/CephクラスタA Rook/CephクラスタB
    アプリ アプリ アプリ
    オブジェクト
    ストレージ
    ブロック
    ストレージ
    ブロック
    ストレージ
    現行インフラ
    リモート
    K8sクラスタ
    * 左図と
    同様の構成
    HDD
    node node SSD
    HDD
    HDD SSD
    NVMe SSD

    View Slide

  25. 成熟度
    ▌ユーザは制限付きでデータを置いてよい
    ⚫性能を気にしない
    ⚫長時間ダウンしても問題ない
    ▌毎週全サーバを順番に再起動しているが、
    最近は問題が起きていない
    25

    View Slide

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

    View Slide

  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

    View Slide