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
20191120_ビヨンド勉強会__21_Kubernetes_is_何_を語るために必要な基...
Search
nezumisannn
November 20, 2019
Technology
0
590
20191120_ビヨンド勉強会__21_Kubernetes_is_何_を語るために必要な基礎知識.pdf
nezumisannn
November 20, 2019
Tweet
Share
More Decks by nezumisannn
See All by nezumisannn
20241204_ビヨンド勉強会_44_AWS_Service_Catalogを利用したIaCのテンプレート化とTerraformによるデプロイ.pdf
nezumisannn
0
120
20240828_ビヨンド勉強会_42_EKS_on_FargateでWebサービスを公開するために覚えておきたいこと.pdf
nezumisannn
0
73
20240530_ビヨンド勉強会#41_ビヨンドのエンジニア新卒研修における取り組み
nezumisannn
0
87
20230511_AWSにおけるコンテナサービスの選択とIaC実装例.pdf
nezumisannn
0
1.1k
リーダーになって1年経過して_取り組んできたことと大事にしている考え方_の裏側_.pdf
nezumisannn
0
59
20211118_GKEにおける高負荷時のPodとWorker_Nodeの挙動について.pdf
nezumisannn
0
110
20211014_Alibaba_Cloud_Container_Service_for_KubernetesにおけるServerless_Kubernetesの概要とManaged_Kubernetesとの違い.pdf
nezumisannn
0
61
20211008_ApsaraDB_for_PolarDBとAWS_Auroraの機能比較.pdf
nezumisannn
1
110
20210122_AlibabaCloudパートナーサミット_Terraform_Cloudを活用するマルチクラウドオートメーション.pdf
nezumisannn
0
50
Other Decks in Technology
See All in Technology
When Windows Meets Kubernetes…
pichuang
0
300
機械学習を「社会実装」するということ 2025年版 / Social Implementation of Machine Learning 2025 Version
moepy_stats
5
1k
0→1事業こそPMは営業すべし / pmconf #落選お披露目 / PM should do sales in zero to one
roki_n_
PRO
1
1.4k
月間60万ユーザーを抱える 個人開発サービス「Walica」の 技術スタック変遷
miyachin
1
140
技術に触れたり、顔を出そう
maruto
1
150
Amazon Q Developerで.NET Frameworkプロジェクトをモダナイズしてみた
kenichirokimura
1
200
データ基盤におけるIaCの重要性とその運用
mtpooh
4
500
今年一年で頑張ること / What I will do my best this year
pauli
1
220
デジタルアイデンティティ技術 認可・ID連携・認証 応用 / 20250114-OIDF-J-EduWG-TechSWG
oidfj
2
670
I could be Wrong!! - Learning from Agile Experts
kawaguti
PRO
8
3.4k
Formal Development of Operating Systems in Rust
riru
1
420
Bring Your Own Container: When Containers Turn the Key to EDR Bypass/byoc-avtokyo2024
tkmru
0
850
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.4k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.1k
Making the Leap to Tech Lead
cromwellryan
133
9k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Fireside Chat
paigeccino
34
3.1k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
192
16k
Bash Introduction
62gerente
610
210k
The Power of CSS Pseudo Elements
geoffreycrofte
74
5.4k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Building Adaptive Systems
keathley
38
2.4k
Transcript
Kubernetes is 何? を語るために必要な基礎知識 ビヨンド勉強会 #21 2019/11/20 株式会社ビヨンド 寺岡 佑樹
自己紹介 resource “my_profile” “nezumisannn” { name = “Yuki.Teraoka” nickname =
“ねずみさん家。” company = “beyond” job = “Site Reliability Engineer” twitter = “@yktr_sre” skills = [“terraform”,”packer”] }
Kubernetes is 何?の前に
このクジラの名前は? ↑ Dockerと呼ぶらしい
Docker is 何? ・コンテナと呼ばれる仮想環境を提供するOSS ・開発はdotCloud社(現Docker社) ・仮想化という部分では同じだがハイパーバイザー型とは異なる ←上に乗ってるこれ
コンテナ is 何? ・アプリケーション及び依存関係をパッケージ化して抽象化したもの ・複数のコンテナを同じマシンで実行してOSのカーネルを共有できる ・各コンテナはユーザー空間で独立したプロセスとして実行される ・コンテナ内にOSが含まれないためサイズが小さく起動が早い ・Dockerエンジンさえあればどこでも同じように動く
つまり? コンテナ型 ハイパーバイザー型 https://www.docker.com/resources/what-container
Kubernetesは ・Docker前提で動作するものです ・事前知識として覚えておきましょう
Kubernetes is 何?
Kubernetes is 何? ・アプリケーションのコンテナ群を統合管理するためのソフトウェア ・GoogleがBorgと呼ばれる内製ツールをOSSとして公開したのが始まり ・現在はCloud Native Computing Foundationがメンテナンスを行っている
Kubernetesの注目度
こんなツイートが Kubernetesはクラウド界のLinuxになりつつある
kubernetesの注目度 ・Swarmを推奨していたDockerもKubernetesをネイティブにサポートした ・クラウドベンダーもKubernetes互換のマネージドサービスを多数リリース ・Elastic Kubernetes Service ・Google Kubernetes Engine ・Azure
Kubernetes Service
Kubernetesが 求められる背景
Kubernetesが求められる背景 ・モノリスからマイクロサービスへ https://aws.amazon.com/jp/microservices/ ・単一サービス ・密結合 ・複数サービス ・疎結合 ・サービスごとの開発 /デプロイ ・障害範囲の分離
マイクロサービスでは ・独立した複数のコンテナを効率的に管理できる仕組みが必要になる ・それがオーケストレーションツールと言われるもの ・Kubernetesもそのツールの中の1つ
Kubernetesで 何ができるのか?
Kubernetesで出来ること ・コンテナのスケジューリング ・ローリングアップデート ・オートスケーリング ・障害が発生したときのセルフヒーリング ・Infrastructure as Code
Kubernetesの 主要コンポーネント
Client Master Node https://github.com/kubernetes/kubernetes/blob/rel ease-1.3/docs/design/architecture.md
Client https://github.com/kubernetes/kubernetes/blob/rel ease-1.3/docs/design/architecture.md
kubectl ・Kubernetesを操作するためのCLIクライアント ・全ての操作はkube-apiserverを経由して実行される
Master https://github.com/kubernetes/kubernetes/blob/rel ease-1.3/docs/design/architecture.md
マスターコンポーネント ・etcd ・kube-apiserver ・kube-scheduler ・kube-controller-manager ・cloud-controller-manager ・kube-dns
Master https://github.com/kubernetes/kubernetes/blob/rel ease-1.3/docs/design/architecture.md
etcd ・Kubernetesのリソース永続化に利用される分散型KVS ・Kubernetesの全てのクラスタ情報の保存場所として利用される
Master https://github.com/kubernetes/kubernetes/blob/rel ease-1.3/docs/design/architecture.md
kube-apiserver ・kubernetesのAPIを提供するコンポーネント ・その他のコンポーネントはkube-apiserverを経由してリソースにアクセスする ・そのため直接etcdを参照するのはkube-apiserverのみになる ・その他クライアントの認証・認可も担当する ・負荷に応じてスケールアウトが可能
Master https://github.com/kubernetes/kubernetes/blob/rel ease-1.3/docs/design/architecture.md
kube-scheduler ・作成されたPodをNodeへ割り当てるためのスケジューラ ・kube-apiserverを経由してPod及びNodeのリソースを非同期に監視する ・Podが作成されたときに最適なNodeを選択してバインディングする
Pod ・Kubernetesにおいてコンテナを動かすための最小単位 ・コンテナのイメージバージョンなどの基本情報 ・共有ストレージ(ボリューム) などが含まれる
Node ・仮想マシンまたは物理マシンで構成されたワーカーマシン ・Podは必ずNode上で実行される
Master https://github.com/kubernetes/kubernetes/blob/rel ease-1.3/docs/design/architecture.md
kube-controller-manager ・Kubernetesオブジェクトを処理するコントローラの実行・管理を行うデーモン ・コントローラはkube-apiserverを経由してオブジェクトを非同期に監視する ・オブジェクトに変更があればコントローラによって変更が反映される ・オブジェクトには以下のようなものが存在する ・Deployment ・ReplicaSet
cloud-controller-manager ・Kubernetesの基盤となっているクラウドプロバイダを管理するコンポーネント ・マネージドなロードバランサなどを扱うときに利用する
kube-dns ・Kubernetesクラスタ内部で利用するDNS ・Serviceリソースが作成されるとkube-dnsにもレコードが登録される
Serviceリソース ・Podへの接続エンドポイントを提供 ・トラフィックをルーティング
Node https://github.com/kubernetes/kubernetes/blob/rel ease-1.3/docs/design/architecture.md
ノードコンポーネント ・kubelet ・kube-proxy
Node https://github.com/kubernetes/kubernetes/blob/rel ease-1.3/docs/design/architecture.md
kubelet ・各Nodeで動作するエージェント ・kube-apiserverを監視して自ノードに割り当てられたPodを起動する
Node https://github.com/kubernetes/kubernetes/blob/rel ease-1.3/docs/design/architecture.md
kube-proxy ・Serviceリソースを元にルーティングを行う ・デフォルトでiptablesを利用してパケットの制御を行っている
独特の概念が多いですが ・基礎知識として覚えましょう ・実際に触ったときにより理解しやすくなります
まとめ
まとめ ・KubernetesでDockerコンテナ群を統合管理できる ・独自の概念が多いためまずは主要なコンポーネントを把握していくと良い ・実際に触ってみるのが早い(ニゲチャダメ)
終わり