CLE33 発表資料 情報技術系演習に用いるサーバ群の管理のためのkubernetesの機能拡張
情報技術系演習に用いるサーバ群の管理のためのkubernetesの機能拡張信州大学大学院工学系研究科小林優吾1
View Slide
目次1. 背景2. 目的- 汎用的な基盤の作成- システムのスケーラビリティ3. 要件- 既存手法の分析4. システムの実装5. 結果 2
背景情報技術系の授業等でソフトウェアを使用した演習がしたいという要望がある> コンパイラやエディタ,データベースエンジンただ、各個人のpcに演習環境を作るのは大変サーバ等で集中的に環境を提供し、ブラウザ経由で利用してもらうと利点が多い3
目的演習環境を提供するための汎用的な基盤を作成様々な授業に導入可能にしたい基盤をスケーラビリティを持つシステムとして構築リソース集約や基盤の運用負荷の軽減を目指す4
汎用的な基盤を作成さまざまなソフトウェアを演習で使用する汎用的な仕組みのため各ユーザが1つのサーバを占有するような機能を提供- そのためハードウェア仮想化を利用> 演習で使用するソフトウェアに、演習環境を提供するための実装が不要ハードウェア仮想化の技術にコンテナ仮想化を使用> プロセス隔離等の機能を用い、一台の物理マシンを複数のマシンとして扱える> 起動が高速,仮想マシン方式に比べリソースのオーバーヘッドが少ない5
スケーラビリティを持つシステムとして構築本研究におけるスケーラビリティの定義- 人のスケーラビリティ> 演習環境(コンテナ)の自動復旧> ユーザ人数増加時の運用負荷軽減- ハードウェアのスケーラビリティ> 複数台マシンへの分散> これらを解決するため、コンテナを管理するシステム(kubernetes)の導入6
kubernetes とは複数台のハードウェアマシンをまとめてクラスタ化しコンテナを効率的に運用するプラットフォーム7
kubernetesの機能- Auto-scaling- Self-healing - 演習環境が落ちた時に自動復旧- Scheduling - 複数台のノードで分散して環境を作れる- Portability - CloudProviderの基盤に簡単に移せる(システム運用者の利点)これらの機能が本研究のシステム構築に有用であるため採用8
kubernetesの特性kubernetesは単一で負荷の高いシステムの運用に特化> 例えばリクエストの多いwebアプリケーション今回のような、ユーザが1つのサーバを占有しユーザ数と同数の実行環境が必要になる用途には不向き> kubernetesを本研究で採用するには課題がある10
kubernetesを使う上での課題1ユーザにつき1つコンテナを割り当てる機能はkubernetesには無いため、公式の機能では簡単に実装できない> これを行う機能を持つシステムがkunernetesとは別に必要> kubernetesの利点を生かしたいので設計を工夫する必要がある11
要件ユーザ数増加時の運用負荷軽減を除いて課題はkubernetesの導入で解決ユーザ数増加時の運用負荷軽減の目的ユーザ数が増えても運用の負荷が増えないようにする> これを解決することを目標とする13
kubernetesのアーキテクチャkubernetesは以下に挙げるような特徴を持つ- Declarative resource-management> あらゆる操作をconfigの形で渡す- Reconciliation loop> 監視を行いconfigで宣言した状態を保つループ14
15kubernetesの基本動作
本研究で使用したい機能16
実装の検討システム実現の実装候補が複数あると考えたため、以下の3つについて比較1. Template engine2. StatefulSet3. kubernetesの拡張-> 比較した結果,3. kubernetesの拡張が最適17
3. kubernetesの拡張(Custom Controller)kubernetesの機能であるCustomResourceDefinitionを使うシステム,構成を単純にできる> 自分でkubernetesのAPIを扱う実装を行う必要がある22
kubernetesの拡張とは独自の機能を持ったAPIをkubernetesの内部へ起動後に追加する- 開発内容はkubernetesの内部APIを開発する場合とほぼ同一- kubernetesのソースコードへ独自の改変を加えるのに近い- kubernetesの通常のリソースと同じ手順で利用可能> 運用の負荷を非常に低くできる23
26
27
28
結果40
システム全体で見るとcrdのリソースを操作するコンポーネントがあるmicroserviceアーキテクチャ41
実現例42
end46