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

CLE33

yugo kobayashi
March 25, 2021
24

 CLE33

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

yugo kobayashi

March 25, 2021
Tweet

Transcript

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

    View Slide

  2. 目次
    1. 背景
    2. 目的
    - 汎用的な基盤の作成
    - システムのスケーラビリティ
    3. 要件
    - 既存手法の分析
    4. システムの実装
    5. 結果 2

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  6. スケーラビリティを持つシステムとして構築
    本研究におけるスケーラビリティの定義
    - 人のスケーラビリティ
    > 演習環境(コンテナ)の自動復旧
    > ユーザ人数増加時の運用負荷軽減
    - ハードウェアのスケーラビリティ
    > 複数台マシンへの分散
    > これらを解決するため、コンテナを管理するシステム(kubernetes)の導入
    6

    View Slide

  7. kubernetes とは
    複数台のハードウェアマシンをまとめてクラスタ化し
    コンテナを効率的に運用するプラットフォーム
    7

    View Slide

  8. kubernetesの機能
    - Auto-scaling
    - Self-healing - 演習環境が落ちた時に自動復旧
    - Scheduling - 複数台のノードで分散して環境を作れる
    - Portability - CloudProviderの基盤に簡単に移せる(システム運用者の利点)
    これらの機能が本研究のシステム構築に有用であるため採用
    8

    View Slide

  9. kubernetesの特性
    kubernetesは単一で負荷の高いシステムの運用に特化
    > 例えばリクエストの多いwebアプリケーション
    今回のような、ユーザが1つのサーバを占有し
    ユーザ数と同数の実行環境が必要になる用途には不向き
    > kubernetesを本研究で採用するには課題がある
    10

    View Slide

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

    View Slide

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

    View Slide

  12. kubernetesのアーキテクチャ
    kubernetesは以下に挙げるような特徴を持つ
    - Declarative resource-management
    > あらゆる操作をconfigの形で渡す
    - Reconciliation loop
    > 監視を行いconfigで宣言した状態を保つループ
    14

    View Slide

  13. 15
    kubernetesの基本動作

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  18. 26

    View Slide

  19. 27

    View Slide

  20. 28

    View Slide

  21. 結果
    40

    View Slide

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

    View Slide

  23. 実現例
    42

    View Slide

  24. end
    46

    View Slide