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.5k
Kubernetesを知る
2024/12/2 ゼミでの発表に使った資料です。
logica / Takuto Nagami
December 02, 2024
Tweet
Share
More Decks by logica / Takuto Nagami
See All by logica / Takuto Nagami
プロポーザル一次〆切に向けて
logica0419
1
44
「海外登壇」という 選択肢を与えるために 〜Gophers EX
logica0419
1
2.4k
Nekko Cloud、 これまでとこれから ~学生サークルが作る、 小さなクラウド
logica0419
2
2.9k
Proposal Challengers 2025 募集説明会
logica0419
1
29
Resizing Animated GIFs Without CGO or Third-Party Libraries
logica0419
2
46
徹底比較!HA Kubernetes ClusterにおけるControl Plane LoadBalancerの選択肢
logica0419
2
500
外部カンファレンスで登壇しよう! 〜「強い」エンジニアへの一歩を踏み出す〜
logica0419
4
240
kube-vipとkube-proxy置き換えCiliumを積んだ究極のK3sクラスタを建てる
logica0419
4
750
ITエンジニアとして知っておいてほしい、電子メールという大きな穴
logica0419
10
1.6k
Other Decks in Technology
See All in Technology
AWSLambdaMCPServerを使ってツールとMCPサーバを分離する
tkikuchi
1
1.8k
アジャイル脅威モデリング#1(脅威モデリングナイト#8)
masakane55
3
140
Amazon CloudWatch Application Signals ではじめるバーンレートアラーム / Burn rate alarm with Amazon CloudWatch Application Signals
ymotongpoo
5
290
”知のインストール”戦略:テキスト資産をAIの文脈理解に活かす
kworkdev
PRO
9
4.1k
Startups On Rails 2025 @ Tropical on Rails
irinanazarova
0
240
クォータ監視、AWS Organizations環境でも楽勝です✌️
iwamot
PRO
1
230
低レイヤを知りたいPHPerのためのCコンパイラ作成入門 / Building a C Compiler for PHPers Who Want to Dive into Low-Level Programming
tomzoh
0
200
AIと開発者の共創: エージェント時代におけるAIフレンドリーなDevOpsの実践
bicstone
1
230
似たような課題が何度も蘇ってくるゾンビふりかえりを撲滅するため、ふりかえりのテーマをフォーカスしてもらった話 / focusing on the theme
naitosatoshi
0
370
アセスメントで紐解く、10Xのデータマネジメントの軌跡
10xinc
1
330
SRE NEXT CfP チームが語る 聞きたくなるプロポーザルとは / Proposals by the SRE NEXT CfP Team that are sure to be accepted
chaspy
1
560
10分でわかるfreeeのQA
freee
1
12k
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
71
10k
BBQ
matthewcrist
88
9.6k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.7k
Typedesign – Prime Four
hannesfritz
41
2.6k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.1k
Building Flexible Design Systems
yeseniaperezcruz
329
38k
For a Future-Friendly Web
brad_frost
176
9.7k
Faster Mobile Websites
deanohume
306
31k
Docker and Python
trallard
44
3.3k
Site-Speed That Sticks
csswizardry
5
480
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を好きになろう