264 Views
November 19, 25
スライド概要
11/18~11/19に開催された「CloudNative Days Winter 2025」 の発表資料です。
作成者:大阪公立大学大学院 筧万里 2025.11.19 CloudNative Days 2025 オンプレGPU監視システムの リプレイス奮闘記 Keito Okamoto
Keito Okamoto(V01d42/@V01dA2) ● ⼤阪公⽴⼤学⼤学院 情報学研究科 M2 ● 研究室にてオンプレサーバーの保守‧運⽤ ● 最近はObservabilityを勉強中 ● 登壇どころかイベント参加初めてで 滅茶苦茶緊張しております… 2
弊研究室での運⽤しているシステムを紹介 3
研究室GPU監視システム 4
現⾏の構造 GPU Monitoring (Webサーバー) cron processgpu1.csv processgpu2.csv /var/autofs/nfs/web /var/autofs/nfs/web GPU-1 GPU-2 … processgpuXX.csv * * * * * sh make_info.sh /var/autofs/nfs/web … GPU-XX 5
現⾏の構造の問題 GPU Monitoring (Webサーバー) cron ● cronの処理が落ちたのか processgpu1.csv processgpu2.csv /var/autofs/nfs/web /var/autofs/nfs/web GPU-1 GPU-2 … processgpuXX.csv * * * * * sh make_info.sh /var/autofs/nfs/web GPUが落ちたのかの … GPU-XX 問題の切り分けができない ● GPUを⼊れる度に⼿動でこのcron等の設定を⾏う必要がある ● NFSマウントに失敗すると、cronのprocessがスタックする 6
そうだ、Kubernetesを導⼊しよう!💡 7
k8sクラスタの構築 ● Ansibleによって⼀元的に各種Packageのインストールや設定 (Playbookは⾃作) ● 各種OSSや⾃作アプリのデプロイ ○ Helm : Helm ChartによってManifest管理するため ○ SealedSecret : Secretも含めGitHub上で管理するため ○ ArgoCD : GitOpsを実現するため ○ Prometheus : GPUメトリクスを収集‧監視するため ○ gpu-exporter : ⾃作Exporter ○ web-dashboard : ⾃作Webアプリケーション 8
k8sクラスタの構築 ● Ansibleによって⼀元的に各種Packageのインストールや設定 (Playbookは⾃作) どうしてkubesprayを使わず、 わざわざ⾃作でPlaybookを? ● 各種OSSや⾃作アプリのデプロイ ○ Helm : Helm ChartによってManifest管理するため ○ SealedSecret : Secretも含めGitHub上で管理するため ○ ArgoCD : GitOpsを実現するため ○ Prometheus : GPUメトリクスを収集‧監視するため ○ gpu-exporter : ⾃作Exporter ○ web-dashboard : ⾃作Webアプリケーション 9
k8sクラスタの構築 ● Ansibleによって⼀元的に各種Packageのインストールや設定 (Playbookは⾃作) どうしてkubesprayを使わず、 わざわざ⾃作でPlaybookを? ● 各種OSSや⾃作アプリのデプロイ ○ Helm : Helm ChartによってManifest管理するため ExporterもDCGM Exporterを ○ SealedSecret : Secretも含めGitHub上で管理するため 使えばいいのでは? ○ ArgoCD : GitOpsを実現するため ○ Prometheus : GPUメトリクスを収集‧監視するため ○ gpu-exporter : ⾃作Exporter ○ web-dashboard : ⾃作Webアプリケーション 10
k8sクラスタの構築 ● Ansibleによって⼀元的に各種Packageのインストールや設定 (Playbookは⾃作) どうしてkubesprayを使わず、 わざわざ⾃作でPlaybookを? ● 各種OSSや⾃作アプリのデプロイ ○ Helm : Helm ChartによってManifest管理するため ExporterもDCGM Exporterを ○ SealedSecret : Secretも含めGitHub上で管理するため 使えばいいのでは? ○ ArgoCD : GitOpsを実現するため DashboardもGrafanaで(ry ○ Prometheus : GPUメトリクスを収集‧監視するため ○ gpu-exporter : ⾃作Exporter ○ web-dashboard : ⾃作Webアプリケーション 11
研究室サーバー管理における問題 ● 学⽣のため、どうやっても⼈の引き⽌めが不可能(3年弱) ● フレックスアルバイト体系のため、 稼働する⼈だけが動き、技術が全体に浸透しない 特定技術スタックが継承されて⾏かない… 認知負荷を減らして触るハードルを下げたい 12
刷新におけるジレンマ ● 技術導⼊によって効率化も進む⼀⽅負荷も増える… 問題発⽣時の 切り分け負荷 参画における 学習コスト 将来機能追加に おける負荷軽減 導⼊による ⾃動化 13
刷新に当たって ● 基盤となるk8sの部分はしっかり導⼊する ○ kubeadm ○ helm ● ⼀⽅で障害対応できるようにするため可読性を上げる ○ kubespray, DCGM Exporterの不採⽤ ● 今後拡⼤して利⽤して⾏けるOSSは学習コストを踏まえ 導⼊の是⾮を決定 ○ ArgoCD : WebUIでPodの稼働状況を確認できるため採⽤ ○ Prometheus : 今後Disk状況の監視などにも使えるため採⽤ 14
刷新後のシステム ● 全てArgoCDのApplicationSet下で管理 15
刷新後のシステム ● gpu-exporter ○ GPU UsageとProcessを収集する exporter ○ tagをtriggerにImageをビルド ○ helmによるデプロイに対応 ○ 現状はNVIDIA GPU Operatorおよび Prometheus Operatorに依存 16
刷新後のシステム ● gpu-dashboard ○ Prometheus APIを経由してGPU情報を表⽰するDashboard ○ tagをtriggerにImageをビルド ○ helmによるデプロイに対応 17
振り返って ● サーバー管理に⼊った当初、独⾃の設定が多く⼤変だった 経験から認知負荷を下げたかった ● いざ⾃分がシステムを作る側になると 思いの他考慮すべき事項が多く⼤変だった…💦 ● スモールスタートで徐々に組織の扱える技術を 増やしていく視点を持つことも⼤切 18
ご清聴ありがとうございました!! 19