Slide 1

Slide 1 text

Kubernetes Sapporo for Beginners Kubernetes 入門 #1

Slide 2

Slide 2 text

Kubernetes Sapporo for Beginners 自己紹介 松本 宏紀 ( まつもと ひろき ) ● ソフトウェア・エンジニア + インフラ周りちょっと。 ● Dev → (松本) → Ops ● 開発環境構築・ソフトウェア技術支援、オフショア先ラボ人員の開発リーダー。 ● Java、Cassandra、ElasticSearch、Kafka周りを使うプラットフォーム開発。 ● 社内用Slack Bot開発とかもやる。適当にツール作る。 ● Kubernetesは2017年2月くらいに初めて触った。dockerは昔々・・・。 Twitter:@hirokimatsumo13

Slide 3

Slide 3 text

Kubernetes Sapporo for Beginners Kubernetes入門:ゴール ● どんな仕組みか分からないけど、とりあえず使えるようになる。 ※さわる→学ぶ→さわる→学ぶを繰り返す方が学習しやすいです。 ● 今後深く学びたい・運用できるようになりたいと思った時に、1人、もしくはの人と一 緒に勉強することができるようになる。

Slide 4

Slide 4 text

Kubernetes Sapporo for Beginners Kubernetes入門:ストーリー(予定) #1 Kubernetesの概要を知る。 #2 ハンズオン:アプリケーションを動かしてみる #3 ハンズオン:Deployments、StatefulSetを触ってみる #4 ハンズオン:Configmap、Secretを触ってみる #5 ハンズオン:Helmを触ってみる

Slide 5

Slide 5 text

Kubernetes Sapporo for Beginners 今日のゴール ● Kubernetesがどんなことできそうか理解できる ● 次回、ハンズオンをやってみたいと思えるほど興味が沸く 1. ソフトウェア開発のお話 2. Kubernetes a. どんな人達が使っている? b. コンテナ c. 特徴 d. 開発者に対する恩恵 e. 運用者に対する恩恵 3. まとめ a. 完璧なプラットフォームでは無い b. よし、とりあえず触ってみよう ( 次回告知 ) アジェンダ

Slide 6

Slide 6 text

Kubernetes Sapporo for Beginners ソフトウェア開発のお話 ● 多くのサービスは、ユーザーが安心して利用できなければ意味がない。 ● 多くのサービスは、保守していくライフサイクルの方が長い。 ※ローンチするまでよりも、ローンチ後の保守・改修期間が長い。 ● 多くのサービスは、複数人で企画~運用までを行っている。 ぼくのPCで動く最強のプログラムができ たよ! ソースは無いけど、求めてる要件達成し たアセンブリあります! 保守・運用できないと意味ない

Slide 7

Slide 7 text

Kubernetes Sapporo for Beginners Kubernetes https://kubernetes.io/ コンテナ化されたアプリケーションのデプロイ、スケールリング、また管理するための OSS。 Cloud Native Computing FoundationのGraduated Project。 Googleで利用されていたクラスタマネージャーの Borgの思想をもとに作られたもの。

Slide 8

Slide 8 text

Kubernetes Sapporo for Beginners どんな人達が使ってる? ● Mercari 様 https://cloudplatform-jp.googleblog.com/2018/01/Google-Cloud-Platform-Mercari-kubernetes.html ● リクルート・テクノロジーズ 様 http://www.atmarkit.co.jp/ait/articles/1804/10/news006.html ● Abema TV ( 株式会社サイバーエージェント 様 ) https://www.slideshare.net/strsk/google-container-engine-kubernetes ● ZOZOTOWN 様 https://speakerdeck.com/labor/zozotown-geng-huan-yun-xi-tong-zhi-dao ● 株式会社ブロードリーフ 様 https://speakerdeck.com/broadleaf/developer-summit-2018-infrastructure-by-cassandra-and-kubernetes

Slide 9

Slide 9 text

Kubernetes Sapporo for Beginners どんな人達が使ってる? Docker導入状況に関するユーザー調査結果 (2018年) 出展:https://www.idcjapan.co.jp/Press/Current/20180614Apr.html Kubernetes Meetup Tokyo Survey https://docs.google.com/spreadsheets/d/1vhDEAm4DrcHaytdYIs4Vb64-b2w09n2-OX3Ae0OjXJQ/edit#gid=100826 8109 Kubernetes Meetup Tokyoと、Kubernetes Sapporo for Begineersは何も関わり無いです。 勝手に引用してますが、謝る準備は万全です 。

Slide 10

Slide 10 text

Kubernetes Sapporo for Beginners コンテナ? https://www.docker.com/resources/what-container ● 起動速い ● Image小さい ● Kernelは共有 Windowsでも動く。 ※VMを使用。 コンテナ=Dockerではない。

Slide 11

Slide 11 text

Kubernetes Sapporo for Beginners コンテナ? どれくらい小さい? Hello World的なAPIを返すWebアプリケーションだと…。 imageの種類 image size 起動するまでの時間 (※1) golangのアプリケーション 9MB ~5秒 Spring BootのJavaアプリケーション 85MB ~5秒 ※1…ウォームアップ時間は含んでいません。また、 CPU: 100ms~300msを与えた場合の時間です。

Slide 12

Slide 12 text

Kubernetes Sapporo for Beginners どこまで管理? CaaS ( Container as a Service ) ● GCP :Google Kubernetes Engine ● AWS :EKS ● Azure :Azure Kubernetes Servie Knative (のはず)

Slide 13

Slide 13 text

Kubernetes Sapporo for Beginners Kubernetesの特徴 ● ベンダー・ロックインされない ● 各種リソース定義すれば簡単にデプロイできる ● 自動修復、自動配置、自動スケーリング、ローリングアップデートが行える ● アプリケーションのリソース (CPU/Memory/Disk)の確保・抑制を行える 開発担当に対する恩恵 ( 主にDockerの利点 ) 運用担当に対する恩恵 ● 環境構築が楽になる ● スケール試験が楽になる ● 環境依存の問題が減る ● 環境構築手順書、情報管理が楽になる ※環境作るための定義するもの→そのまま設計資料。 ● 復旧作業が楽になる ● スケーリングが楽になる ● デプロイが楽になる

Slide 14

Slide 14 text

Kubernetes Sapporo for Beginners 開発者に対する恩恵 下記のミドルウェア使っています。複数ベンダーさんで開発を行っています。 問合せで良く来るのは下記くらい。 ● Dockerインストールわかりません。 ● プロキシ環境でDocker動かす設定がわかりません。 開発環境 Cassandra Redis Elasticsearch Kafka ● 全部Dockerイメージとして提供 ● ローカル開発環境は、まだDocker-Compose ※でもDocker+Kubernetesが統合され、ある程度はふつうに WindowsでもMacでも使える ようになったので、Kubernetesに移行検討中。 ● Macでも良いし、Windowsでも良い。 ※Win7 (32bit)で頑張っていた猛者もいたが …。 ● Dockerがあれば環境構築10分。( IDE環境除く ) スキーマ作成ツールもDockerイメージ。 Docker

Slide 15

Slide 15 text

Kubernetes Sapporo for Beginners 開発環境 開発者に対する恩恵 分散システムの場合、開発者の PCで他のサービスを動かす際に Dockerイメージがあればコンパイル とかいらない。ランタイムもいらない。 Service D Service A Service B Service C ● ITb、ST用も全てイメージのバージョン管理。 それを使ってローカルで動かす事も可能。 ※実際↓みたいな感じ。 https://speakerdeck.com/broadleaf/developer-summit-2018-infrastructur e-by-cassandra-and-kubernetes?slide=20 ● 不要にソース取得 + コンパイルしなくて良い。 go nginx php java Docker

Slide 16

Slide 16 text

Kubernetes Sapporo for Beginners 開発者に対する恩恵 develop image:sha:xxxx image:sha:xxxx image:1.0.0 通常はrevertしてソースから戻す。 ものすごく緊急時は、imageも履歴として存在するので、1つ前 にタグ付けして戻したりもする。 CD(継続的デリバリ) がしやすい。素早いデプロイ、素早いロールバック。 Docker Kubernetes

Slide 17

Slide 17 text

Kubernetes Sapporo for Beginners 開発者に対する恩恵 ● Docker ( + docker compose ) を使う事によるメリットが大きい。 ● Kubernetesがあると、下記のような場合に幸せになるかも ○ クラスタリング(冗長化)構成でテストしたい ○ リソース制限を色々変えて動かしたい ○ Dockerとかあんま意識しない。ここら辺意識するのは一部の人 下記のような場合は、恩恵ほとんど無いと思います。 ● 少人数で開発・運用してる。 ● クラスタとかしない。1台運用での可用性で十分。 ● PaaS、FaaS使うことが前提のサービス。

Slide 18

Slide 18 text

Kubernetes Sapporo for Beginners 運用者に対する恩恵 死活監視の部分も、ちゃんと開発者に作ってもらえる (はず) 。 livenessProbe: httpGet: path: /actuator/health port: 30001 periodSeconds: 10 timeoutSeconds: 5 successThreshold: 1 failureThreshold: 3 initialDelaySeconds: 30 readinessProbe: failureThreshold: 30 httpGet: path: /actuator/health port: 30001 scheme: HTTP periodSeconds: 10 successThreshold: 1 timeoutSeconds: 5 https://github.com/h-r-k-matsumoto/k8s-jmc-sample/blob/master/kubernetes/020_statefulset.yml#L31-L48 Docker Kubernetes

Slide 19

Slide 19 text

Kubernetes Sapporo for Beginners 運用者に対する恩恵 デプロイ方法も色々できる。 ( 色々制限あるけど ) Kubernetes apiVersion: apps/v1 kind: Deployment spec: replicas: 5 strategy: rollingUpdate: maxSurge: 2 maxUnavailable: 1 ローリングアップデート。 新しいのを2つ作成、そして1つは削除してアップデート。 kind: Deployment spec: template: metadata: labels: app: go-app-foo ver: 1.0.0 kind: Deployment spec: template: metadata: labels: app: go-app-foo ver: 1.1.0 kind: Service spec: selector: matchLabels: app: go-app-foo ver: 1.0.0 ブルー・グリーン デプロイ。

Slide 20

Slide 20 text

Kubernetes Sapporo for Beginners 運用者に対する恩恵 冗長化もすごい簡単。 アプリケーションレベルでの水平スケールをダウンタイム無しで行える。 Kubernetes Kubernetes Cluster Zone A Node Node Zone B Node Node Zone C Node Node Pod Pod Pod Deployments Service Service

Slide 21

Slide 21 text

Kubernetes Sapporo for Beginners 運用者に対する恩恵 ● オートスケールもできる。 ( CPU使用率、独自のmetricsに基づく ) ● 手動スケールも簡単 ( kubectl scale deploy xxx --replicas=xx ) ● LB自動で作れる。 ● デプロイが楽。yamlファイル(Manifest)書き換えるだけ。 ● immutableなイメージだからある程度安心。 ( 変なもの混入しづらい ) ● Helmを使えば、環境複製も楽になるになるはず。

Slide 22

Slide 22 text

Kubernetes Sapporo for Beginners 開発・運用に対する恩恵 ● 多くのサービスは、ユーザーが安心して利用できなければ意味がない。 ○ 自動復旧機能 ○ 容易な水平スケール ○ 容易なロールアウト、ロールバックのタスク管理 ○ マイクロ・サービスのシステム・アーキテクチャにおける必要な機能が充実 ● 多くのサービスは、保守していくライフサイクルの方が長い。 ○ コンテナ技術による環境非依存 ● 多くのサービスは、複数人で企画~運用までを行っている。 ○ コンテナ技術による環境非依存 ○ クラウドベンダーにロックインされないプラットフォーム

Slide 23

Slide 23 text

Kubernetes Sapporo for Beginners 仲良くなれるかも 開 運 圧倒的一貫性! 設計書?手順書? 放置されやすいものよりも、yamlファイルでマニフェストを書いていれば、常に最新です。 お互いに、開発がしやすくなる、運用しやすくなるメリットありませんか?

Slide 24

Slide 24 text

Kubernetes Sapporo for Beginners 完成されたプラットフォームではない ● 今もなお、ものすごい勢いでバージョンアップしてる ● 周辺技術がいっぱいある (istio、helm…)。 ● 簡単なサービスなら、 FaaS、PaaS、BaaSで作った方が楽。 ※将来:Knativeまで出てくれば、運用面の管理が統一できるかも。 ● シンプルな構成 ( 多くの分散技術を必要としない構成 ) なら、素直にマネージド・サービス使ったほう が楽。 ● グローバルIP固定でホワイトリスト登録が必要なサービスと連携する時に面倒。 ● マイクロサービスで開発しようと思うなら、必要になってくる。 ● サービス指向アーキテクチャでのシステムだと、あると便利かもしれない。 ● インフラエンジニアじゃなくても、作って壊せる。

Slide 25

Slide 25 text

Kubernetes Sapporo for Beginners 次はさわってみよう! 知識と実践。次回、触っていきましょう!! WindowsもOK!MacもOK!GKEもOK!その他環境でも良いけど触ったことない! #1 Kubernetesの概要を知る #2 ハンズオン:アプリケーション動かしてみる #3 ハンズオン:Deployments、StatefulSetでデプロイ体験 #4 ハンズオン:Configmap、Secretで環境毎の設定を変えてみる #5 ハンズオン:Helmを使ってみる

Slide 26

Slide 26 text

Kubernetes Sapporo for Beginners その他:学びやすいドキュメント ● O’REILLY - 入門 Kubernetes :日本語!わかりやすい。 ● Kubernetes - Docs :英語。情報量豊富。 ○ Concepts :各オブジェクトの説明、ユースケース書いてます。 ○ Tutorials :minikube使って何となく触った感を味わえます。 ○ Reference :最終的にはここを見る事になる事が多くなります。 ● Qiitaで探す :日本語!それなりに・・・色々ある。 情報はすぐに陳腐化します。 Kubernetesで調べようとすると、 Minikube、Docker Swarmの情報も合わせて色々と出てきます。 でも、今はDockerに統合されてリリースされていますので、 Dockerをインストールすれば、そのまま Kubernetesも使えます。

Slide 27

Slide 27 text

Kubernetes Sapporo for Beginners 質疑・応答