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
19
6.2k
Kubernetesを知る
2024/12/2 ゼミでの発表に使った資料です。
logica / Takuto Nagami
December 02, 2024
Tweet
Share
More Decks by logica / Takuto Nagami
See All by logica / Takuto Nagami
Resizing Animated GIFs Without CGO or Third-Party Libraries
logica0419
2
40
徹底比較!HA Kubernetes ClusterにおけるControl Plane LoadBalancerの選択肢
logica0419
2
350
外部カンファレンスで登壇しよう! 〜「強い」エンジニアへの一歩を踏み出す〜
logica0419
4
210
kube-vipとkube-proxy置き換えCiliumを積んだ究極のK3sクラスタを建てる
logica0419
4
600
ITエンジニアとして知っておいてほしい、電子メールという大きな穴
logica0419
10
1.5k
「認証認可」という体験をデザインする ~Nekko Cloud認証認可基盤計画
logica0419
5
680
標準ライブラリの奥深アップデートを掘り下げよう!
logica0419
2
770
超アナログ中心な印刷会社で「エンジニアリング」を見直す
logica0419
4
260
Pure GoでアニメーションGIFのリサイズを実装する
logica0419
0
560
Other Decks in Technology
See All in Technology
Creative Pair
kawaguti
PRO
1
130
地方企業がクラウドを活用するヒント
miu_crescent
PRO
1
110
サービスローンチを成功させろ! 〜SREが教える30日間の攻略ガイド〜
mmmatsuda
2
4.4k
BLEAでAWSアカウントのセキュリティレベルを向上させよう
koheiyoshikawa
0
120
“自分”を大切に、フラットに。キャリアチェンジしてからの一年 三ヶ月で見えたもの。
maimyyym
0
300
日本語プログラミングとSpring Bootアプリケーション開発 #kanjava
yusuke
2
340
ソフトウェア開発現代史:製造業とソフトウェアは本当に共存できていたのか?品質とスピードを問い直す
takabow
15
5.3k
Enhancing SRE Using AI
yoshiiryo1
1
260
オーティファイ会社紹介資料 / Autify Company Deck
autifyhq
10
120k
バクラクの組織とアーキテクチャ(要約)2025/01版
shkomine
13
2.9k
Makuake*UPSIDER_LightningTalk
upsider_tech
0
190
[SRE kaigi 2025] ガバメントクラウドに向けた開発と変化するSRE組織のあり方 / Development for Government Cloud and the Evolving Role of SRE Teams
kazeburo
4
1.9k
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
34
1.6k
Side Projects
sachag
452
42k
Music & Morning Musume
bryan
46
6.3k
Site-Speed That Sticks
csswizardry
3
300
Gamification - CAS2011
davidbonilla
80
5.1k
Producing Creativity
orderedlist
PRO
343
39k
Designing for Performance
lara
604
68k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.3k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
Writing Fast Ruby
sferik
628
61k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.5k
The Cult of Friendly URLs
andyhume
78
6.2k
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を好きになろう