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