Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CLE33
Search
yugo kobayashi
March 25, 2021
0
48
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
70
[k8sjp #56] Kustomize v5 を含む最新機能とテクニックの紹介
koba1t
2
9.5k
kustomizeのあまり知られていないが 便利な機能 (kustomize edit,create) の紹介
koba1t
0
3.1k
Recap: Customizing Kustomize with Client-Side Custom Resources
koba1t
0
240
Ephemeral_Containers_という謎の機能をk8sはどうやって実現しているのか.pdf
koba1t
1
240
カスタムコントローラは万能なのでアプリケーションを作るためにも使える
koba1t
1
520
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
459
33k
Embracing the Ebb and Flow
colly
84
4.5k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
Done Done
chrislema
181
16k
Into the Great Unknown - MozCon
thekraken
32
1.5k
Visualization
eitanlees
145
15k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Code Review Best Practice
trishagee
64
17k
A better future with KSS
kneath
238
17k
RailsConf 2023
tenderlove
29
900
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
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