$30 off During Our Annual Pro Sale. View Details »

Kubernetesストレージ可用性の監視ツール「pie」のご紹介

Cybozu
PRO
November 24, 2022

 Kubernetesストレージ可用性の監視ツール「pie」のご紹介

Kubernetes Meetup Tokyo #54の発表資料です。
https://k8sjp.connpass.com/event/264501/

Cybozu
PRO

November 24, 2022
Tweet

More Decks by Cybozu

Other Decks in Technology

Transcript

  1. Kubernetesストレージ可用性の
    監視ツール「pie」のご紹介
    2022年11月24日
    サイボウズ ストレージチーム
    大神 祐真
    1

    View Slide

  2. 自己紹介
    ▌大神 祐真
    ▌サイボウズ ストレージチームにて
    分散ストレージCephと
    自社製CSIドライバTopoLVMを用いた
    データ移行と運用に従事しています
    2

    View Slide

  3. はじめに
    ▌サイボウズの新インフラ基盤(Neco)は
    Kubernetesクラスタです
    ▌ストレージチームではNeco上のアプリケーションへ
    2種のストレージを提供しています
    Rook/Ceph – 分散ストレージ
    TopoLVM – ノード内のローカルストレージ(LVM)を
    動的に切り出して提供する自社製CSIドライバ
    3

    View Slide

  4. はじめに
    ▌サイボウズの新インフラ基盤(Neco)は
    Kubernetesクラスタ
    ▌ストレージチームではNeco上のアプリケーションへ
    2種のストレージを提供している
    Rook/Ceph – 分散ストレージ
    TopoLVM – ノード内のローカルストレージ(LVM)を
    動的に切り出して提供する自社製CSIドライバ
    4
    PVの払い出しや、
    払い出したボリュームへの読み書きが
    正常に行えるか監視する仕組みが欲しい
    pie

    View Slide

  5. 正常性の確認方法
    ▌以下の処理を定期的に実施します
    1. 指定したNodeでCSIドライバ(TopoLVM)に
    PVを払い出させる
    2. PodからPVにデータを書く
    3. Podを消す
    ▌そして、PVの払い出しにかかった時間や、
    アクセスのパフォーマンスを測って、メトリクスとして出力します
    5
    払い出しに時間がかかりすぎる、
    パフォーマンスがしきい値を超える等で
    異常と判定することができます

    View Slide

  6. pieの中での2つの役割分担
    (Probe/Controller)
    ▌以下の処理を定期的に実施します
    1. 指定したNodeでCSIドライバ(TopoLVM)に
    PVを払い出させる
    2. PodからPVにデータを書く
    3. Podを消す
    ▌そして、Podの払い出しにかかった時間や、
    アクセスのパフォーマンスを測って、メトリクスとして出力します
    6
    ←を行う役割が
    Probeです
    ↑に加えてProbeをPodとして生成する役割が
    Controllerです

    View Slide

  7. PV監視の基本的な流れ
    7
    CronJob
    プローブ用Pod
    volume
    Probe
    確認対象のNodeにプローブ用Podをデプロイ
    CSI Driver
    Pod再起時に
    PV(volume)を作成
    Controller Pod
    Controller
    Prometheus,
    VictoriaMetrics
    metrics を scrape して回収

    異常値を検出して発

    pieのプログラム
    新しくデプロイ
    するリソース
    既存のリソース
    凡例
    生成
    metrics を post
    Node Reconciler
    Event Reconciler

    View Slide

  8. PV監視の基本的な流れ
    8
    CronJob
    プローブ用Pod
    volume
    Probe
    確認対象のNodeにプローブ用Podをデプロイ
    CSI Driver
    Pod再起時に
    PV(volume)を作成
    Controller Pod
    Controller
    Prometheus,
    VictoriaMetrics
    metrics を scrape して回収

    異常値を検出して発

    pieのプログラム
    新しくデプロイ
    するリソース
    既存のリソース
    凡例
    生成
    metrics を post
    Node Reconciler
    Event Reconciler

    View Slide

  9. Node Reconciler
    ▌Node別・Storage Class別に
    プローブ用Podを生成するCronJobを
    生成します
    現状のCronJobでは
    1分周期でプローブ用Podを生成します
    9

    View Slide

  10. PV監視の基本的な流れ
    10
    CronJob
    プローブ用Pod
    volume
    Probe
    確認対象のNodeにプローブ用Podをデプロイ
    CSI Driver
    Pod再起時に
    PV(volume)を作成
    Controller Pod
    Controller
    Prometheus,
    VictoriaMetrics
    metrics を scrape して回収

    異常値を検出して発

    pieのプログラム
    新しくデプロイ
    するリソース
    既存のリソース
    凡例
    生成
    metrics を post
    Node Reconciler
    Event Reconciler

    View Slide

  11. プローブ用Pod
    ▌PVの払い出しと、
    払い出されたPVをマウントし、
    読み書きのチェック(現状ではfio)
    を行います
    Generic Ephemeral Volumeを用いています
    ▌得られたメトリクスをControllerへpostします
    11

    View Slide

  12. PV監視の基本的な流れ
    12
    CronJob
    プローブ用Pod
    volume
    Probe
    確認対象のNodeにプローブ用Podをデプロイ
    CSI Driver
    Pod再起時に
    PV(volume)を作成
    Controller Pod
    Controller
    Prometheus,
    VictoriaMetrics
    metrics を scrape して回収

    異常値を検出して発

    pieのプログラム
    新しくデプロイ
    するリソース
    既存のリソース
    凡例
    生成
    metrics を post
    Node Reconciler
    Event Reconciler

    View Slide

  13. Event Reconciler
    ▌プローブ用PodのEventをチェックし、
    タイムスタンプ情報を元にメトリクスを
    作成します
    ▌例)
    (Pod完了時刻) – (Pod生成時刻)
    があるしきい値以上である場合、
    「CreateProbeSlowCount」という
    メトリクスをインクリメントします
    13

    View Slide

  14. 動作例
    14
    pieを動作しているホスト(この場合はローカルホスト)
    の8080番ポートの”/metrics”からメトリクスの確認が行えます

    View Slide

  15. OSSとして公開中
    ▌以下のリポジトリで公開しています
    https://github.com/topolvm/pie
    15

    View Slide

  16. 主な課題
    ▌PVの削除時間に関するメトリクスの追加
    ▌ドキュメント拡充
    16

    View Slide

  17. 17
    おわり
    ご清聴ありがとうございました!

    View Slide