「Kubernetes is 何?を語るために必要な基礎知識」

1.3K Views

May 29, 23

スライド概要

2019年11月21日 ビヨンド勉強会#21
株式会社ビヨンド システムソリューション部 SREチーム
寺岡 佑樹
Kubernetes の基礎とKubernetesでできることについて説明します。

profile-image

日本・中国・カナダを拠点に、AWS や GCP・Azure などのマルチクラウドに対応した、クラウド / サーバーの構築・移行、24時間365日の運用保守 / 監視、負荷テスト、Webシステム開発、サーバーサイド / API 開発 など、クラウド / サーバーに特化したサービスをご提供いたします。 ● コーポレートサイト https://beyondjapan.com ● YouTube https://www.youtube.com/c/beyomaruch ● X(Twitter) https://twitter.com/beyondjapaninfo ● Instagram https://www.instagram.com/beyondjapan_24365

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

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

2.

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

3.

Kubernetes is 何?の前に

4.

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

5.

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

6.

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

7.

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

8.

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

9.

Kubernetes is 何?

10.

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

11.

Kubernetesの注目度

12.

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

13.

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

14.

Kubernetesが 求められる背景

15.

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

16.

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

17.

Kubernetesで 何ができるのか?

18.

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

19.

Kubernetesの 主要コンポーネント

20.

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

21.

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

22.

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

23.

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

24.

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

25.

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

26.

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

27.

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

28.

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

29.

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

30.

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

31.

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

32.

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

33.

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

34.

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

35.

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

36.

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

37.

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

38.

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

39.

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

40.

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

41.

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

42.

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

43.

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

44.

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

45.

まとめ

46.

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

47.

終わり