---
title: 「Kubernetes is 何？を語るために必要な基礎知識」
tags:  #ビヨ勉 #kubernetes  
author: [株式会社ビヨンド](https://convert.docswell.com/user/beyond24365)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/YE9NYDYXE3.jpg?width=480
description: 2019年11月21日　ビヨンド勉強会#21 株式会社ビヨンド　システムソリューション部　SREチーム 寺岡 佑樹 Kubernetes の基礎とKubernetesでできることについて説明します。
published: May 29, 23
canonical: https://convert.docswell.com/s/beyond24365/K248LV-2023-05-29-114216
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/YE9NYDYXE3.jpg)

Kubernetes is 何？
を語るために必要な基礎知識
ビヨンド勉強会 #21
2019/11/20 株式会社ビヨンド 寺岡 佑樹


# Page. 2

![Page Image](https://bcdn.docswell.com/page/GE8K63697D.jpg)

自己紹介
resource “my_proﬁle” “nezumisannn” {
name
= “Yuki.Teraoka”
nickname = “ねずみさん家。 ”
}
company
= “beyond”
job
= “Site Reliability Engineer”
twitter
= “@yktr_sre”
skills
= [“terraform”,”packer”]


# Page. 3

![Page Image](https://bcdn.docswell.com/page/LELZ9V9MJR.jpg)

Kubernetes is 何？の前に


# Page. 4

![Page Image](https://bcdn.docswell.com/page/4JMVZGZ6JW.jpg)

このクジラの名前は？
↑ Dockerと呼ぶらしい


# Page. 5

![Page Image](https://bcdn.docswell.com/page/PJR26Z6NE9.jpg)

Docker is 何？
・コンテナと呼ばれる仮想環境を提供するOSS
・開発はdotCloud社(現Docker社)
・仮想化という部分では同じだがハイパーバイザー型とは異なる
←上に乗ってるこれ


# Page. 6

![Page Image](https://bcdn.docswell.com/page/PEXDM9M87X.jpg)

コンテナ is 何？
・アプリケーション及び依存関係をパッケージ化して抽象化したもの
・複数のコンテナを同じマシンで実行してOSのカーネルを共有できる
・各コンテナはユーザー空間で独立したプロセスとして実行される
・コンテナ内にOSが含まれないためサイズが小さく起動が早い
・Dockerエンジンさえあればどこでも同じように動く


# Page. 7

![Page Image](https://bcdn.docswell.com/page/3EKXGPGL7D.jpg)

つまり？
コンテナ型
https://www.docker.com/resources/what-container
ハイパーバイザー型


# Page. 8

![Page Image](https://bcdn.docswell.com/page/L735NXN6E5.jpg)

Kubernetesは
・Docker前提で動作するものです
・事前知識として覚えておきましょう


# Page. 9

![Page Image](https://bcdn.docswell.com/page/87DDW2WM7G.jpg)

Kubernetes is 何？


# Page. 10

![Page Image](https://bcdn.docswell.com/page/VJPX919Q78.jpg)

Kubernetes is 何？
・アプリケーションのコンテナ群を統合管理するためのソフトウェア
・GoogleがBorgと呼ばれる内製ツールをOSSとして公開したのが始まり
・現在はCloud Native Computing Foundationがメンテナンスを行っている


# Page. 11

![Page Image](https://bcdn.docswell.com/page/2EVLMYMPJQ.jpg)

Kubernetesの注目度


# Page. 12

![Page Image](https://bcdn.docswell.com/page/57GXG9GQEL.jpg)

こんなツイートが
Kubernetesはクラウド界のLinuxになりつつある


# Page. 13

![Page Image](https://bcdn.docswell.com/page/4EQ8XWXWJP.jpg)

kubernetesの注目度
・Swarmを推奨していたDockerもKubernetesをネイティブにサポートした
・クラウドベンダーもKubernetes互換のマネージドサービスを多数リリース
・Elastic Kubernetes Service
・Google Kubernetes Engine
・Azure Kubernetes Service


# Page. 14

![Page Image](https://bcdn.docswell.com/page/KJ426K61E1.jpg)

Kubernetesが
求められる背景


# Page. 15

![Page Image](https://bcdn.docswell.com/page/LE1MVXV57G.jpg)

Kubernetesが求められる背景
・モノリスからマイクロサービスへ
・単一サービス
・複数サービス
・密結合
・疎結合
・サービスごとの開発 /デプロイ
・障害範囲の分離
https://aws.amazon.com/jp/microservices/


# Page. 16

![Page Image](https://bcdn.docswell.com/page/GEW3LNLWE2.jpg)

マイクロサービスでは
・独立した複数のコンテナを効率的に管理できる仕組みが必要になる
・それがオーケストレーションツールと言われるもの
・Kubernetesもそのツールの中の1つ


# Page. 17

![Page Image](https://bcdn.docswell.com/page/47ZVM3M2E3.jpg)

Kubernetesで
何ができるのか？


# Page. 18

![Page Image](https://bcdn.docswell.com/page/YJ65NX567V.jpg)

Kubernetesで出来ること
・コンテナのスケジューリング
・ローリングアップデート
・オートスケーリング
・障害が発生したときのセルフヒーリング
・Infrastructure as Code


# Page. 19

![Page Image](https://bcdn.docswell.com/page/GJ5Y5XY5J4.jpg)

Kubernetesの
主要コンポーネント


# Page. 20

![Page Image](https://bcdn.docswell.com/page/9E2GNXGGER.jpg)

https://github.com/kubernetes/kubernetes/blob/rel
ease-1.3/docs/design/architecture.md
Client
Node
Master


# Page. 21

![Page Image](https://bcdn.docswell.com/page/D7YVP8VG7M.jpg)

Client
https://github.com/kubernetes/kubernetes/blob/rel
ease-1.3/docs/design/architecture.md


# Page. 22

![Page Image](https://bcdn.docswell.com/page/VENM5QM8J8.jpg)

kubectl
・Kubernetesを操作するためのCLIクライアント
・全ての操作はkube-apiserverを経由して実行される


# Page. 23

![Page Image](https://bcdn.docswell.com/page/Y79NYDNX73.jpg)

https://github.com/kubernetes/kubernetes/blob/rel
ease-1.3/docs/design/architecture.md
Master


# Page. 24

![Page Image](https://bcdn.docswell.com/page/G78K63K9JD.jpg)

マスターコンポーネント
・etcd
・kube-apiserver
・kube-scheduler
・kube-controller-manager
・cloud-controller-manager
・kube-dns


# Page. 25

![Page Image](https://bcdn.docswell.com/page/L7LZ9VZMER.jpg)

https://github.com/kubernetes/kubernetes/blob/rel
ease-1.3/docs/design/architecture.md
Master


# Page. 26

![Page Image](https://bcdn.docswell.com/page/4EMVZGV6EW.jpg)

etcd
・Kubernetesのリソース永続化に利用される分散型KVS
・Kubernetesの全てのクラスタ情報の保存場所として利用される


# Page. 27

![Page Image](https://bcdn.docswell.com/page/PER26Z2N79.jpg)

https://github.com/kubernetes/kubernetes/blob/rel
ease-1.3/docs/design/architecture.md
Master


# Page. 28

![Page Image](https://bcdn.docswell.com/page/P7XDM9D8JX.jpg)

kube-apiserver
・kubernetesのAPIを提供するコンポーネント
・その他のコンポーネントはkube-apiserverを経由してリソースにアクセスする
・そのため直接etcdを参照するのはkube-apiserverのみになる
・その他クライアントの認証・認可も担当する
・負荷に応じてスケールアウトが可能


# Page. 29

![Page Image](https://bcdn.docswell.com/page/37KXGPXLJD.jpg)

https://github.com/kubernetes/kubernetes/blob/rel
ease-1.3/docs/design/architecture.md
Master


# Page. 30

![Page Image](https://bcdn.docswell.com/page/LJ35NX5675.jpg)

kube-scheduler
・作成されたPodをNodeへ割り当てるためのスケジューラ
・kube-apiserverを経由してPod及びNodeのリソースを非同期に監視する
・Podが作成されたときに最適なNodeを選択してバインディングする


# Page. 31

![Page Image](https://bcdn.docswell.com/page/8JDDW2DMJG.jpg)

Pod
・Kubernetesにおいてコンテナを動かすための最小単位
・コンテナのイメージバージョンなどの基本情報
・共有ストレージ(ボリューム) などが含まれる


# Page. 32

![Page Image](https://bcdn.docswell.com/page/VEPX91XQJ8.jpg)

Node
・仮想マシンまたは物理マシンで構成されたワーカーマシン
・Podは必ずNode上で実行される


# Page. 33

![Page Image](https://bcdn.docswell.com/page/27VLMYLPEQ.jpg)

https://github.com/kubernetes/kubernetes/blob/rel
ease-1.3/docs/design/architecture.md
Master


# Page. 34

![Page Image](https://bcdn.docswell.com/page/5JGXG9XQ7L.jpg)

kube-controller-manager
・Kubernetesオブジェクトを処理するコントローラの実行・管理を行うデーモン
・コントローラはkube-apiserverを経由してオブジェクトを非同期に監視する
・オブジェクトに変更があればコントローラによって変更が反映される
・オブジェクトには以下のようなものが存在する
・Deployment
・ReplicaSet


# Page. 35

![Page Image](https://bcdn.docswell.com/page/47Q8XW8WEP.jpg)

cloud-controller-manager
・Kubernetesの基盤となっているクラウドプロバイダを管理するコンポーネント
・マネージドなロードバランサなどを扱うときに利用する


# Page. 36

![Page Image](https://bcdn.docswell.com/page/KE426K2171.jpg)

kube-dns
・Kubernetesクラスタ内部で利用するDNS
・Serviceリソースが作成されるとkube-dnsにもレコードが登録される


# Page. 37

![Page Image](https://bcdn.docswell.com/page/L71MVXM5JG.jpg)

Serviceリソース
・Podへの接続エンドポイントを提供
・トラフィックをルーティング


# Page. 38

![Page Image](https://bcdn.docswell.com/page/G7W3LN3W72.jpg)

https://github.com/kubernetes/kubernetes/blob/rel
ease-1.3/docs/design/architecture.md
Node


# Page. 39

![Page Image](https://bcdn.docswell.com/page/4JZVM3V273.jpg)

ノードコンポーネント
・kubelet
・kube-proxy


# Page. 40

![Page Image](https://bcdn.docswell.com/page/YE65NXY6JV.jpg)

https://github.com/kubernetes/kubernetes/blob/rel
ease-1.3/docs/design/architecture.md
Node


# Page. 41

![Page Image](https://bcdn.docswell.com/page/GE5Y5XG5E4.jpg)

kubelet
・各Nodeで動作するエージェント
・kube-apiserverを監視して自ノードに割り当てられたPodを起動する


# Page. 42

![Page Image](https://bcdn.docswell.com/page/972GNXYG7R.jpg)

https://github.com/kubernetes/kubernetes/blob/rel
ease-1.3/docs/design/architecture.md
Node


# Page. 43

![Page Image](https://bcdn.docswell.com/page/DJYVP8GGJM.jpg)

kube-proxy
・Serviceリソースを元にルーティングを行う
・デフォルトでiptablesを利用してパケットの制御を行っている


# Page. 44

![Page Image](https://bcdn.docswell.com/page/V7NM5QG8E8.jpg)

独特の概念が多いですが
・基礎知識として覚えましょう
・実際に触ったときにより理解しやすくなります


# Page. 45

![Page Image](https://bcdn.docswell.com/page/YJ9NYDWXJ3.jpg)

まとめ


# Page. 46

![Page Image](https://bcdn.docswell.com/page/GJ8K63N9ED.jpg)

まとめ
・KubernetesでDockerコンテナ群を統合管理できる
・独自の概念が多いためまずは主要なコンポーネントを把握していくと良い
・実際に触ってみるのが早い(ニゲチャダメ)


# Page. 47

![Page Image](https://bcdn.docswell.com/page/LJLZ9VPM7R.jpg)

終わり


