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
Kubernetesを知る
Search
logica / Takuto Nagami
December 02, 2024
Technology
21
6.6k
Kubernetesを知る
2024/12/2 ゼミでの発表に使った資料です。
logica / Takuto Nagami
December 02, 2024
Tweet
Share
More Decks by logica / Takuto Nagami
See All by logica / Takuto Nagami
Golangci-lint v2爆誕: 君たちはどうすべきか
logica0419
1
280
プロポーザル一次〆切に向けて
logica0419
1
53
「海外登壇」という 選択肢を与えるために 〜Gophers EX
logica0419
1
2.6k
Nekko Cloud、 これまでとこれから ~学生サークルが作る、 小さなクラウド
logica0419
2
3.2k
Proposal Challengers 2025 募集説明会
logica0419
1
30
Resizing Animated GIFs Without CGO or Third-Party Libraries
logica0419
2
49
徹底比較!HA Kubernetes ClusterにおけるControl Plane LoadBalancerの選択肢
logica0419
2
560
外部カンファレンスで登壇しよう! 〜「強い」エンジニアへの一歩を踏み出す〜
logica0419
4
250
kube-vipとkube-proxy置き換えCiliumを積んだ究極のK3sクラスタを建てる
logica0419
4
820
Other Decks in Technology
See All in Technology
Coding Agentに値札を付けろ
watany
3
580
Amplifyとゼロからはじめた AIコーディング。失敗と気づき
mkdev10
1
160
Why Platform Engineering? - マルチプロダクト・少人数 SRE の壁を越える挑戦 -
nulabinc
PRO
5
480
人間性を捧げる生成AI時代の技術選定
yo4raw
1
900
ゆるくはじめるSLI・SLO
yatoum
1
120
分解し、導き、託す ログラスにおける“技術でリードする” 実践の記録
hryushm
1
490
Cursorを全エンジニアに配布 その先に見据えるAI駆動開発の未来 / 2025-05-13-forkwell-ai-study-1-cursor-at-loglass
itohiro73
2
730
VitePress & MCPでアプリ仕様のオープン化に挑戦する
hal_spidernight
0
130
Previewでもここまで追える! Azure AI Foundryで始めるLLMトレース
tomodo_ysys
2
760
名単体テスト 禁断の傀儡(モック)
iwamot
PRO
1
320
newmo の創業を支える Software Architecture と Platform Engineering
110y
5
580
Part1 GitHubってなんだろう?その1
tomokusaba
3
850
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Visualization
eitanlees
146
16k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.8k
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
Raft: Consensus for Rubyists
vanstee
137
6.9k
Product Roadmaps are Hard
iamctodd
PRO
53
11k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Optimising Largest Contentful Paint
csswizardry
37
3.2k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
430
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Fontdeck: Realign not Redesign
paulrobertlloyd
84
5.5k
Transcript
logica X: @logica0419 GitHub: @logica0419 Kubernetesを知る
コンテナ仮想化と オーケストレーションシステム
サーバー上でアプリを動かす • Webサーバーを動かすとき、生のコンピュータでは不便 ◦ リソースの食い合い、セキュリティ懸念 など
計算リソースの仮想化 • リソースの配分ができるようになる • OSを変更できる • セキュリティ向上
従来の仮想化 (VM) の欠点 • 仮想化 = ハードウェアをシミュレーション ◦ 非常にリソースを圧迫 •
ハイパーバイザによる効率化は限定的
カーネル - OSのコア • OS: コンピューター全体の動作を管理・制御する • カーネル: OSの中でも、ハードウェアの制御を担う ◦
一番重要な部品
コンテナ型仮想化 • カーネルまではホストOSを使い回す = 軽い!
コンテナ仮想化 • 実態は「あるプロセスを隔離する」技術 ◦ Linuxは1つの親プロセスを起点としたプロセスの木 • コンテナを支える技術 ◦ Namespace -
PID / Network / File System など ▪ プロセスをグループ化し、隔離空間を作る ◦ cgroup - プロセスグループへのリソース制限 ◦ Capability - プロセスグループへの権限付与
爆発するコンテナ数 • 同内容のコンテナを増やし、ロードバランシングしたい • 企業だと数千〜数万は当たり前になってくる ◦ 個別に管理するのはとても大変
コンテナオーケストレーション • アプリケーションを大規模に展開するため、コンテナの 管理を自動化する
Kubernetes • コンテナオーケストレーションシステムの一つ • Google内製のシステム「Borg」を元に作られた汎用的 なインフラ基盤
Kubernetesの提供する リソース (モノ) の例
Pod • 便利になったコンテナ、Kubernetesの最小単位 • 1つのソフトウェアを構成する単位 ◦ ≒ 1つのIPアドレスでくくって良い範囲
ReplicaSet / Deployment • Podをまとめて管理するための仕組み • ReplicaSet: 同じ内容のPodを指定個数立てる • Deployment:
ReplicaSetを使い安全にバージョン移行
Service • 同じ内容のPod群に、均等に通信を振り分ける • Pod群を1つのIPアドレスでまとめることができる
宣言型のオブジェクト管理 • 「これをして下さい」でなく「この状態にして下さい」 ◦ 「マニフェスト」であるべき状態を書く • 暗黙知のない 安定した稼働
とにかく大量のコンテナを 楽に管理するための ノウハウが全て詰まっている 紹介した他にも、権限管理など様々なリソースがあります
Kubernetesの実態: リソース定義 と Reconciliation Loop
Reconciliation Loop • リソースを理想の状態に持っていくための操作
Reconciliation Loop • 以下の操作を一定時間ごとに繰り返す ◦ 理想の状態 (宣言されたマニフェスト) を取得 ◦ 実際の状態を観測
◦ 理想の状態と実際の状態を比較 ◦ 2つの差を埋めるように、実際の状態を変更する • Controllerと呼ばれる部品がこれを担当する • Self-Healingが簡単に実装できる
例: DeploymentがPodになるまで • 単純なReconciliation Loopの積み重ねで複雑性を実現
リソース定義 • 同じリソースについて「理想の状態」「実際の状態」を 同じ構造で表したい! • リソース定義で、どんなプロパティを持つのか定義する
定義されたリソースに対して Reconciliation Loopを回す ただそれだけのシステム ベースのアイデアは非常に単純
無限の拡張性
学校に行くバッグの準備を管理する • これにリソース定義とReconciliation Loopを回すと、 常に毎朝同じバッグの中身を保つことができる 即ち、ありとあらゆるモノは リソース定義とReconciliation Loopで管理できる! (と信じている人たちがKubernetesを作っている)
Kubernetesを拡張する • Custom Resource Definition ◦ ユーザー独自のリソース定義 • Custom Controller
◦ ユーザー独自のReconciliation Loopを回す • この二つの組み合わせがOperator Pattern ◦ これを使ってKubernetesを無限に拡張できる
Kubernetesエコシステム • Kubernetesを拡張して便利にするソフトウェア群
Kubernetesエコシステム • 最近はAI方面もアツい ◦ GPUを扱えるようにしたり、機械学習特化のジョブ スケジューラーだったり…
拡張性が、Kubernetesに どんな環境でも使える 汎用性を与えている これからも発展し続けて欲しい
まとめ
今日話したこと • コンテナ仮想化という技術 • 大規模なコンテナ管理を担うKubernetes • Kubernetesが提供するリソース • リソース定義とReconciliation Loop
• 無限の拡張性
ありがとう ございました Kubernetesを好きになろう