Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CLE33
Search
yugo kobayashi
March 25, 2021
0
64
CLE33
CLE33 発表資料
情報技術系演習に用いるサーバ群の管理のためのkubernetesの機能拡張
yugo kobayashi
March 25, 2021
Tweet
Share
More Decks by yugo kobayashi
See All by yugo kobayashi
[k8sjp]KubeCon_NA_2023_Recap.pdf
koba1t
0
84
[k8sjp #56] Kustomize v5 を含む最新機能とテクニックの紹介
koba1t
2
12k
kustomizeのあまり知られていないが 便利な機能 (kustomize edit,create) の紹介
koba1t
0
3.5k
Recap: Customizing Kustomize with Client-Side Custom Resources
koba1t
0
280
Ephemeral_Containers_という謎の機能をk8sはどうやって実現しているのか.pdf
koba1t
1
300
カスタムコントローラは万能なのでアプリケーションを作るためにも使える
koba1t
1
610
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
47
33k
Designing Powerful Visuals for Engaging Learning
tmiket
0
180
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.5k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
63
35k
Practical Orchestrator
shlominoach
190
11k
The untapped power of vector embeddings
frankvandijk
1
1.5k
Building Applications with DynamoDB
mza
96
6.8k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.3k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
110
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
Ruling the World: When Life Gets Gamed
codingconduct
0
92
Transcript
情報技術系演習に用いるサーバ群の 管理のためのkubernetesの機能拡張 信州大学大学院工学系研究科 小林優吾 1
目次 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
15 kubernetesの基本動作
本研究で使用したい機能 16
実装の検討 システム実現の実装候補が複数あると考えたため、以下の3つについて比較 1. Template engine 2. StatefulSet 3. 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
end 46