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