Slide 1

Slide 1 text

kubernetes 浅瀬 dive 2019/06/19(水) Makuake LT Party #17

Slide 2

Slide 2 text

convto jisibari Twitter: @convto Github: convto 2

Slide 3

Slide 3 text

浅瀬 dive って何

Slide 4

Slide 4 text

Kubernetes のロゴ - こいつ船の舵らしい - コンテナ輸送船的な - おしゃれ - ぼくも海にあやかろう

Slide 5

Slide 5 text

水深 Deep dive

Slide 6

Slide 6 text

水深 Deep dive 浅瀬 dive

Slide 7

Slide 7 text

水深 Deep dive 浅瀬 dive

Slide 8

Slide 8 text

浅瀬 dive 8 水深   こっちをやります Deep dive

Slide 9

Slide 9 text

もくじ - 浅瀬を目指して: kubernetesとは - まずはビーチに行こう: gitとの共通点 - 準備体操: コンテナやサーバーの扱いを知る - 浅瀬 dive: pod を管理するリソースたち - 沖にでるためには - おわりに

Slide 10

Slide 10 text

もくじ - 浅瀬を目指して: kubernetesとは - まずはビーチに行こう: gitとの共通点 - 準備体操: コンテナやサーバーの扱いを知る - 浅瀬 dive: pod を管理するリソースたち - 沖にでるためには - おわりに

Slide 11

Slide 11 text

Kubernetes とは

Slide 12

Slide 12 text

Kubernetes - インフラやアプリを抽象化して扱う - 抽象化されたインフラやアプリを操作できる

Slide 13

Slide 13 text

Kubernetes - インフラやアプリを抽象化して扱う - 抽象化されたインフラやアプリを操作できる

Slide 14

Slide 14 text

浅瀬すぎる

Slide 15

Slide 15 text

水深

Slide 16

Slide 16 text

水深

Slide 17

Slide 17 text

Kubernetes, わかりづらい - 概念が抽象的 - くそでかソフトウェア

Slide 18

Slide 18 text

宇宙から浅瀬にむかいたい - ざっくりどういうものか捉えたい - できれば身近なものとの比較とかがほしい

Slide 19

Slide 19 text

こういうツール 毎日使ってませんか

Slide 20

Slide 20 text

Kubernetes - インフラやアプリを抽象化して扱う - 抽象化されたインフラやアプリを操作できる

Slide 21

Slide 21 text

Kubernetes - インフラやアプリを抽象化して扱う - 抽象化されたインフラやアプリを操作できる      

Slide 22

Slide 22 text

もくじ - 浅瀬を目指して: kubernetesとは - まずはビーチに行こう: gitとの共通点 - 準備体操: コンテナやサーバーの扱いを知る - 浅瀬 dive: pod を管理するリソースたち - 沖にでるためには - おわりに

Slide 23

Slide 23 text

git とは

Slide 24

Slide 24 text

git - コード変更を commit というリソースとしてとらえて 抽象化して扱う - commit に対してCLIなどで操作ができる

Slide 25

Slide 25 text

git - コード変更を commit というリソースとしてとらえて 抽象化して扱う - commit に対してCLIなどで操作ができる      

Slide 26

Slide 26 text

にている

Slide 27

Slide 27 text

Kubernetes と git の共通点 - 現実世界の情報を抽象化する - 抽象化されたリソースを CLI を使って操作 - 高度なことやろうとするのは難しい - が、使うだけならそこまででもない - 分散システムなので雑にやると不整合で死ぬ

Slide 28

Slide 28 text

Kubernetes と git のちがうところ - Kubernetes は詳細を yaml で管理する <-> git は詳 細もCLIで頑張る - Kubernetes はリソースが多い(10以上) <-> git は だいたい commit の操作

Slide 29

Slide 29 text

Kubernetes と git のちがうところ - Kubernetes は詳細を yaml で管理する <-> git は詳 細もCLIで頑張る - Kubernetes はリソースが多い(10以上) <-> git は だいたい commit の操作 Git よりでかいけどノリはとても似ている

Slide 30

Slide 30 text

Git と似てる 警戒しすぎなくてもい い

Slide 31

Slide 31 text

ざっくりノリはわかったぞ! ビーチ到着

Slide 32

Slide 32 text

もくじ - 浅瀬を目指して: kubernetesとは - まずはビーチに行こう: gitとの共通点 - 準備体操: コンテナやサーバーの扱いを知る - 浅瀬 dive: pod を管理するリソースたち - 沖にでるためには - おわりに

Slide 33

Slide 33 text

コンテナの扱い

Slide 34

Slide 34 text

コンテナは pod というリソースで管理 - Pod にはだいたい一つのコンテナが載ってる - 条件によってはたまに複数 - アプリケーションが動くのはここ - Pod の配置を指示してインフラを作っていく

Slide 35

Slide 35 text

だいたいおなじ コンテナ pod

Slide 36

Slide 36 text

サーバーの扱い

Slide 37

Slide 37 text

サーバーは node というリソースで管理 - master node が構成管理の仕事をしてくれます - Node に pod がじゃんじゃか載っていく

Slide 38

Slide 38 text

node1 node3 node2 pod pod pod pod pod pod pod pod pod pod

Slide 39

Slide 39 text

準備完了

Slide 40

Slide 40 text

もくじ - 浅瀬を目指して: kubernetes とは - まずはビーチに行こう: git との共通点 - 準備体操: コンテナやサーバーの扱いを知る - 浅瀬 dive: pod を管理するリソースたち - 沖にでるためには - おわりに

Slide 41

Slide 41 text

同じpodを複数配置し たい

Slide 42

Slide 42 text

ReplicaSet - Pod を管理し、ある pod を任意の数つくる - Pod を監視し指定した数より減っていれば自動で 復旧させる - どの node に pod が配置されるかはコントロールさ れない(ある程度配置ルールは決められる)

Slide 43

Slide 43 text

node1 node3 node2 pod pod pod pod

Slide 44

Slide 44 text

node1 node3 node2 pod pod pod pod 「全部で4つ」などの指定はできるが どう配置されるかはわからない

Slide 45

Slide 45 text

複数配置したpodの デプロイ時の挙動をコ ントロールしたい

Slide 46

Slide 46 text

Deployment - ReplicaSet を管理し安全に更新する手段を提供す る - いくつかの更新手段が提供されており、推奨され ているのは RollingUpdate という方法

Slide 47

Slide 47 text

各Nodeにデーモンを 仕込みたい

Slide 48

Slide 48 text

DaemonSet - Pod を管理し、任意の pod をすべての node に1つ ずつ設置する - Fluentd や監視エージェントなど、確実にすべての 物理サーバーに置きたいものに利用する - GKE ではデフォで DeamonSet の fluentd がいる

Slide 49

Slide 49 text

node1 node3 node2 pod pod pod

Slide 50

Slide 50 text

DBなどの永続化デー タを管理したい

Slide 51

Slide 51 text

StatefulSet - DBクラスタなど状態を持ったアプリを構築できる - 細かいことは省略

Slide 52

Slide 52 text

クラスタ上でバッチな どを管理したい

Slide 53

Slide 53 text

Job, CronJob - Job は一度だけ pod を起動する - CronJob は Job を cron 実行する - 詳しいことは省略

Slide 54

Slide 54 text

podとの関係図

Slide 55

Slide 55 text

Pod ReplicaSet Job Deployment CronJob DaemonSet StatefulSet

Slide 56

Slide 56 text

Pod ReplicaSet Job Deployment CronJob DaemonSet StatefulSet こいつらまとめて Workload リソース という名前がついてます

Slide 57

Slide 57 text

Enjoy 浅瀬

Slide 58

Slide 58 text

もくじ - 浅瀬を目指して: kubernetesとは - まずはビーチに行こう: gitとの共通点 - 準備体操: コンテナやサーバーの扱いを知る - 浅瀬 dive: pod を管理するリソースたち - 沖にでるためには - おわりに

Slide 59

Slide 59 text

現実のアプリはまだやることがある - 環境変数の管理 - LBなどの設定 - 開発者ごとの認証、認可 - オートスケールの設定 - etc...

Slide 60

Slide 60 text

これらもKubernetes で管理できる

Slide 61

Slide 61 text

現実のアプリはまだやることがある - 環境変数の管理 Secret など - LBなどの設定 LoadBrancer Service など - 開発者ごとの認証、認可 Service Account - オートスケールの設定 HorizontalPodAutoscaler な ど - etc...

Slide 62

Slide 62 text

どういうリソースがある かわからない

Slide 63

Slide 63 text

網羅的にリソースを学 びたい

Slide 64

Slide 64 text

リソースについての知識 - ドキュメント https://kubernetes.io/ja/docs/home/ - Kubernetes完全ガイド https://www.amazon.co.jp//dp/4295004804 - Kubernetes実践入門 https://www.amazon.co.jp/dp/4297104385

Slide 65

Slide 65 text

とりあえず試したい

Slide 66

Slide 66 text

web上でタダでクラスタたてれる - https://labs.play-with-k8s.com/ 4時間で消えるので 勉強以外の用途には使えない

Slide 67

Slide 67 text

よい船旅を!

Slide 68

Slide 68 text

もくじ - 浅瀬を目指して: kubernetesとは - まずはビーチに行こう: gitとの共通点 - 準備体操: コンテナやサーバーの扱いを知る - 浅瀬 dive: pod を管理するリソースたち - 沖にでるためには - おわりに

Slide 69

Slide 69 text

まとめ - Kubernetes は実は git に似ている - はじめの一歩はそこまで難しくない - 一部を使うだけでもメリットはある - Pod を管理する様々なリソースがある - 一次ソースや体系的なソースで勉強すると良さそ う(ネット記事とかはしんどい印象)

Slide 70

Slide 70 text

次回予告

Slide 71

Slide 71 text

全然きまってない - Go のおすすめCI設定 - 新しい言語触ってみた系 - なんか作ってみた系 - コンテナイメージ最適化

Slide 72

Slide 72 text

ご清聴 ありがとうございました