Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CLE33

066d44ac54522688a0721bd740f73445?s=47 yugo kobayashi
March 25, 2021
13

 CLE33

CLE33 発表資料
情報技術系演習に用いるサーバ群の管理のためのkubernetesの機能拡張

066d44ac54522688a0721bd740f73445?s=128

yugo kobayashi

March 25, 2021
Tweet

Transcript

  1. 情報技術系演習に用いるサーバ群の 管理のためのkubernetesの機能拡張 信州大学大学院工学系研究科 小林優吾 1

  2. 目次 1. 背景 2. 目的 - 汎用的な基盤の作成 - システムのスケーラビリティ 3.

    要件 - 既存手法の分析 4. システムの実装 5. 結果 2
  3. 背景 情報技術系の授業等でソフトウェアを使用した演習がしたいという要望がある > コンパイラやエディタ,データベースエンジン ただ、各個人のpcに演習環境を作るのは大変 サーバ等で集中的に環境を提供し、ブラウザ経由で利用してもらうと利点が多い 3

  4. 目的 演習環境を提供するための汎用的な基盤を作成 様々な授業に導入可能にしたい 基盤をスケーラビリティを持つシステムとして構築 リソース集約や基盤の運用負荷の軽減を目指す 4

  5. 汎用的な基盤を作成 さまざまなソフトウェアを演習で使用する汎用的な仕組みのため各ユー ザが1つのサーバを占有するような機能を提供 - そのためハードウェア仮想化を利用 > 演習で使用するソフトウェアに、演習環境を提供するための実装が不要 ハードウェア仮想化の技術にコンテナ仮想化を使用 > プロセス隔離等の機能を用い、一台の物理マシンを複数のマシンとして扱える

    > 起動が高速,仮想マシン方式に比べリソースのオーバーヘッドが少ない 5
  6. スケーラビリティを持つシステムとして構築 本研究におけるスケーラビリティの定義 - 人のスケーラビリティ > 演習環境(コンテナ)の自動復旧 > ユーザ人数増加時の運用負荷軽減 - ハードウェアのスケーラビリティ

    > 複数台マシンへの分散 > これらを解決するため、コンテナを管理するシステム(kubernetes)の導入 6
  7. kubernetes とは 複数台のハードウェアマシンをまとめてクラスタ化し コンテナを効率的に運用するプラットフォーム 7

  8. kubernetesの機能 - Auto-scaling - Self-healing - 演習環境が落ちた時に自動復旧 - Scheduling -

    複数台のノードで分散して環境を作れる - Portability - CloudProviderの基盤に簡単に移せる(システム運用者の利点) これらの機能が本研究のシステム構築に有用であるため採用 8
  9. kubernetesの特性 kubernetesは単一で負荷の高いシステムの運用に特化 > 例えばリクエストの多いwebアプリケーション 今回のような、ユーザが1つのサーバを占有し ユーザ数と同数の実行環境が必要になる用途には不向き > kubernetesを本研究で採用するには課題がある 10

  10. kubernetesを使う上での課題 1ユーザにつき1つコンテナを割り当てる機能はkubernetesには 無いため、公式の機能では簡単に実装できない > これを行う機能を持つシステムがkunernetesとは別に必要 > kubernetesの利点を生かしたいので設計を工夫する必要がある 11

  11. 要件 ユーザ数増加時の運用負荷軽減を除いて課題はkubernetesの導入で解決 ユーザ数増加時の運用負荷軽減の目的 ユーザ数が増えても運用の負荷が増えないようにする > これを解決することを目標とする 13

  12. kubernetesのアーキテクチャ kubernetesは以下に挙げるような特徴を持つ - Declarative resource-management > あらゆる操作をconfigの形で渡す - Reconciliation loop

    > 監視を行いconfigで宣言した状態を保つループ 14
  13. 15 kubernetesの基本動作

  14. 本研究で使用したい機能 16

  15. 実装の検討 システム実現の実装候補が複数あると考えたため、以下の3つについて比較 1. Template engine 2. StatefulSet 3. kubernetesの拡張 ->

    比較した結果,3. kubernetesの拡張が最適 17
  16. 3. kubernetesの拡張(Custom Controller) kubernetesの機能であるCustomResourceDefinitionを使う システム,構成を単純にできる > 自分でkubernetesのAPIを扱う実装を行う必要がある 22

  17. kubernetesの拡張とは 独自の機能を持ったAPIをkubernetesの内部へ起動後に追加する - 開発内容はkubernetesの内部APIを開発する場合とほぼ同一 - kubernetesのソースコードへ独自の改変を加えるのに近い - kubernetesの通常のリソースと同じ手順で利用可能 > 運用の負荷を非常に低くできる

    23
  18. 26

  19. 27

  20. 28

  21. 結果 40

  22. システム全体で見ると crdのリソースを操作するコンポーネントがあるmicroserviceアーキテクチャ 41

  23. 実現例 42

  24. end 46