Slide 1

Slide 1 text

インフラが苦手でも大丈夫! 紙芝居 Kubernetes あおい

Slide 2

Slide 2 text

自己紹介 名前:あおい 会社:サイボウズ株式会社 職種:SRE アプリケーションを Kubernetes基盤に移行中 twitter: @_a0i 酒と漫画と音楽と日々

Slide 3

Slide 3 text

はじめに 話すこと ● Kubernetesを利用するための考え方、抽象的 な話 話さないこと ● Dockerやコンテナについて詳しい説明 ● Kubernetesを実際に使うための具体的な方法 や詳細な説明

Slide 4

Slide 4 text

第一話:登場Kubernetes   Kubernetesが登場した背景と簡単な説明 第二話:Kubernetesと日々   Kubernetesを利用した開発フロー 第三話:そして旅は続く   Kubernetesで運用を続けるための様々な仕組み 目次

Slide 5

Slide 5 text

登場 Kubernetes

Slide 6

Slide 6 text

大きな Javaアプリケーションが ありました 昔々あるところに・・・

Slide 7

Slide 7 text

はじめのうちはよかったのですが・・・ 一箇所の障害が全 体に影響する 起動に時間がかかる リリースするのに 時間がかかる

Slide 8

Slide 8 text

開発者は考えました

Slide 9

Slide 9 text

コンテナを使ってアプリケーションを小さく分け よう!

Slide 10

Slide 10 text

それでも課題はなくなりません コンテナの障害を検 知して立ち上げ直す ことが大変・・・ 今どのサーバーにどの コンテナが乗ってるん だっけ? このコンテナどこに配 備すれば良い?

Slide 11

Slide 11 text

そこで登場 Kubernetes

Slide 12

Slide 12 text

コンテナにすると何が嬉しくなるのか ・仮想マシンに比べてコンテナは起動が早い ・アプリケーションがコンテナに隔離されている ため便利 一方、コンテナが乱立して管理が大変になってし まう

Slide 13

Slide 13 text

App ゲストOS ホストOS ハードウェア 仮想マシン(VM) コンテナ ハイパーバイザー ゲストOS ミドル ウェア ミドル ウェア App App App App App App App ミドル ウェア ミドル ウェア ハードウェア ホストOS コンテナランタイム

Slide 14

Slide 14 text

Kubernetesとは? Kubernetesは、コンテナ化されたアプリケーショ ンの展開、スケーリング、また管理を自動化する ためのオープンソースコンテナプラットフォーム です。 (Kubernetes公式ドキュメントより https://kubernetes.io/ja/docs/home/)

Slide 15

Slide 15 text

1. マニフェストと呼ばれるリソース設定ファイ ルを利用することでInfrastructure As Code を実現 2. KubernetesのAPIで共通化・抽象化されてお り、サーバー固有の設定を知る必要がない 3. Reconciliation Loop コンテナの運用を便利にするKubernetes

Slide 16

Slide 16 text

apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - name: test image: nginx:1.14.2 resources: requests: memory: "100Mi" マニフェストの例:nginxコンテナ アプリケーションはどの サーバーの上にたてる?OS は?メモリの性能は? などを気にしなくてよい

Slide 17

Slide 17 text

Reconciliation Loop このコンテナ 二つほしい ラジャー!

Slide 18

Slide 18 text

Reconciliation Loop ああああああ あ

Slide 19

Slide 19 text

Reconciliation Loop ♪ 二個ね!

Slide 20

Slide 20 text

Kubernetes と日々

Slide 21

Slide 21 text

Kubernetesが運用を助けてくれることはわかっ たけれど・・・

Slide 22

Slide 22 text

・・・。 開発者にとって具体的にどう便利なの?

Slide 23

Slide 23 text

これまでのアプリケーション開発 Application Virtual Machine 説明簡単化のために抽象化しています ブラウザで アクセス! 設定 ファイル

Slide 24

Slide 24 text

コンテナで開発しようとすると・・・ コンテナ間通信 はどうする? App App App ミドル ウェア ミドル ウェア ハードウェア ホストOS コンテナランタイム 外からアクセス したい時は? 設定ファイルを どうやって 受け渡す? ストレージを 使いたいときは どうする?

Slide 25

Slide 25 text

難しくなってない・・・?

Slide 26

Slide 26 text

呼んだー!?

Slide 27

Slide 27 text

Kubernetesを使うとこうなる! Service Container Container Pod ConfigMap

Slide 28

Slide 28 text

Kubernetesを使ったアプリケーション開発の進め方 CI Container Registry docker build docker push pull Service

Slide 29

Slide 29 text

Kubernetesを使ったアプリケーション開発の進め方 CI Container Registry docker build docker push pull Service manifest kubectl apply

Slide 30

Slide 30 text

毎回手動で kubectl applyで 良いのか? kubectl apply kubectl apply どうやって管理する? どのタイミングで適用する? どの環境に適用する?

Slide 31

Slide 31 text

CIOps OpsとはOperationsの略語 push kick Manifest Repository CI Tool

Slide 32

Slide 32 text

GitOps push pull Manifest Repository Deploy Tool

Slide 33

Slide 33 text

違いは? CIOps:push型。即時適用作業が実施される。 kubectl applyでやっていることを自動化するイ メージなのでわかりやすく直感的。 GitOps:pull型。宣言的であるため、管理されて いるマニフェストが常に正しい設定となる。

Slide 34

Slide 34 text

Kubernetes の構造 kube- apiserver etcd controller manager kubelet kube- proxy kubectl kube- scheduler Control Plane Node Node kubelet kube- proxy

Slide 35

Slide 35 text

そして旅はつづく

Slide 36

Slide 36 text

ある晩コンテナの調子が悪くなったようです・・・ さあどうする!?

Slide 37

Slide 37 text

看病します!

Slide 38

Slide 38 text

様々なHealth Check機構 HealthyではないPodを Serviceから切り離す Podを新規に立ち上げる Service Service

Slide 39

Slide 39 text

自動で他のNodeに リソースを 移してくれる Nodeの障害が起こった場合・・・

Slide 40

Slide 40 text

それでも障害は起こる:他社事例 テスト環境と間違えて 本番環境のクラスタを 削除(Spotify) クリーンアップ処理で本番 環境のDockerイメージを 次々と削除(Airbnb)

Slide 41

Slide 41 text

● どんなにKubernetesが優秀でも障害は起こる ● これまでのVMの運用のように「VMにログイ ンして、psやsystemctlで確認して、ログファ イルを見て」が通用しない ログ・メトリクス・アラート大事! Observability

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

資格取得を目標に勉強したい CKA、CKAD 書籍をがっつり勉強したい Kubernetes完全ガイド 勉強会に参加したい Kubernetes Meetup Tokyo https://k8sjp.connpass.com とにかく手を動かしたい 公式チュートリアル https://kubernetes.io/docs/tutorials/ 課金して体系的に学びたい・ 手を動かしたい Udemy https://www.udemy.com/course/certifi ed-kubernetes-administrator-with-pra ctice-tests/ Next What to Do

Slide 44

Slide 44 text

参考 Kubernetesとは何か? https://kubernetes.io/ja/docs/concepts/overview/what-is-kubernetes/ Using Pods https://kubernetes.io/docs/concepts/workloads/pods/#using-pods 10 More Weird Ways to Blow Up Your Kubernetes - Jian Cheung & Joseph Kim, Airbnb https://www.youtube.com/watch?v=4CT0cI62YHk Keynote: How Spotify Accidentally Deleted All its Kube Clusters with No User Impact - David Xia https://www.youtube.com/watch?v=ix0Tw8uinWs Kubernetes Failure Stories https://k8s.af