Kubernetes Meetup Tokyo #54の発表資料です。 https://k8sjp.connpass.com/event/264501/
Kubernetesストレージ可用性の監視ツール「pie」のご紹介2022年11月24日サイボウズ ストレージチーム大神 祐真1
View Slide
自己紹介▌大神 祐真▌サイボウズ ストレージチームにて分散ストレージCephと自社製CSIドライバTopoLVMを用いたデータ移行と運用に従事しています2
はじめに▌サイボウズの新インフラ基盤(Neco)はKubernetesクラスタです▌ストレージチームではNeco上のアプリケーションへ2種のストレージを提供していますRook/Ceph – 分散ストレージTopoLVM – ノード内のローカルストレージ(LVM)を動的に切り出して提供する自社製CSIドライバ3
はじめに▌サイボウズの新インフラ基盤(Neco)はKubernetesクラスタ▌ストレージチームではNeco上のアプリケーションへ2種のストレージを提供しているRook/Ceph – 分散ストレージTopoLVM – ノード内のローカルストレージ(LVM)を動的に切り出して提供する自社製CSIドライバ4PVの払い出しや、払い出したボリュームへの読み書きが正常に行えるか監視する仕組みが欲しいpie
正常性の確認方法▌以下の処理を定期的に実施します1. 指定したNodeでCSIドライバ(TopoLVM)にPVを払い出させる2. PodからPVにデータを書く3. Podを消す▌そして、PVの払い出しにかかった時間や、アクセスのパフォーマンスを測って、メトリクスとして出力します5払い出しに時間がかかりすぎる、パフォーマンスがしきい値を超える等で異常と判定することができます
pieの中での2つの役割分担(Probe/Controller)▌以下の処理を定期的に実施します1. 指定したNodeでCSIドライバ(TopoLVM)にPVを払い出させる2. PodからPVにデータを書く3. Podを消す▌そして、Podの払い出しにかかった時間や、アクセスのパフォーマンスを測って、メトリクスとして出力します6←を行う役割がProbeです↑に加えてProbeをPodとして生成する役割がControllerです
PV監視の基本的な流れ7CronJobプローブ用PodvolumeProbe確認対象のNodeにプローブ用PodをデプロイCSI DriverPod再起時にPV(volume)を作成Controller PodControllerPrometheus,VictoriaMetricsmetrics を scrape して回収≈異常値を検出して発報pieのプログラム新しくデプロイするリソース既存のリソース凡例生成metrics を postNode ReconcilerEvent Reconciler
PV監視の基本的な流れ8CronJobプローブ用PodvolumeProbe確認対象のNodeにプローブ用PodをデプロイCSI DriverPod再起時にPV(volume)を作成Controller PodControllerPrometheus,VictoriaMetricsmetrics を scrape して回収≈異常値を検出して発報pieのプログラム新しくデプロイするリソース既存のリソース凡例生成metrics を postNode ReconcilerEvent Reconciler
Node Reconciler▌Node別・Storage Class別にプローブ用Podを生成するCronJobを生成します現状のCronJobでは1分周期でプローブ用Podを生成します9
PV監視の基本的な流れ10CronJobプローブ用PodvolumeProbe確認対象のNodeにプローブ用PodをデプロイCSI DriverPod再起時にPV(volume)を作成Controller PodControllerPrometheus,VictoriaMetricsmetrics を scrape して回収≈異常値を検出して発報pieのプログラム新しくデプロイするリソース既存のリソース凡例生成metrics を postNode ReconcilerEvent Reconciler
プローブ用Pod▌PVの払い出しと、払い出されたPVをマウントし、読み書きのチェック(現状ではfio)を行いますGeneric Ephemeral Volumeを用いています▌得られたメトリクスをControllerへpostします11
PV監視の基本的な流れ12CronJobプローブ用PodvolumeProbe確認対象のNodeにプローブ用PodをデプロイCSI DriverPod再起時にPV(volume)を作成Controller PodControllerPrometheus,VictoriaMetricsmetrics を scrape して回収≈異常値を検出して発報pieのプログラム新しくデプロイするリソース既存のリソース凡例生成metrics を postNode ReconcilerEvent Reconciler
Event Reconciler▌プローブ用PodのEventをチェックし、タイムスタンプ情報を元にメトリクスを作成します▌例)(Pod完了時刻) – (Pod生成時刻)があるしきい値以上である場合、「CreateProbeSlowCount」というメトリクスをインクリメントします13
動作例14pieを動作しているホスト(この場合はローカルホスト)の8080番ポートの”/metrics”からメトリクスの確認が行えます
OSSとして公開中▌以下のリポジトリで公開していますhttps://github.com/topolvm/pie15
主な課題▌PVの削除時間に関するメトリクスの追加▌ドキュメント拡充16
17おわりご清聴ありがとうございました!