Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kubernetes入門#1 / Kubernetes Getting Started#1 ...

Kubernetes入門#1 / Kubernetes Getting Started#1 for k8ssa

Kubernetes Sapporo for Beginners User Group Presentation.
https://sapporo-beginner-kubernetes.connpass.com/

Hiroki Matsumoto

October 04, 2018
Tweet

More Decks by Hiroki Matsumoto

Other Decks in Technology

Transcript

  1. Kubernetes Sapporo for Beginners 自己紹介 松本 宏紀 ( まつもと ひろき

    ) • ソフトウェア・エンジニア + インフラ周りちょっと。 • Dev → (松本) → Ops • 開発環境構築・ソフトウェア技術支援、オフショア先ラボ人員の開発リーダー。 • Java、Cassandra、ElasticSearch、Kafka周りを使うプラットフォーム開発。 • 社内用Slack Bot開発とかもやる。適当にツール作る。 • Kubernetesは2017年2月くらいに初めて触った。dockerは昔々・・・。 Twitter:@hirokimatsumo13
  2. Kubernetes Sapporo for Beginners Kubernetes入門:ストーリー(予定) #1 Kubernetesの概要を知る。 #2 ハンズオン:アプリケーションを動かしてみる #3

    ハンズオン:Deployments、StatefulSetを触ってみる #4 ハンズオン:Configmap、Secretを触ってみる #5 ハンズオン:Helmを触ってみる
  3. Kubernetes Sapporo for Beginners 今日のゴール • Kubernetesがどんなことできそうか理解できる • 次回、ハンズオンをやってみたいと思えるほど興味が沸く 1.

    ソフトウェア開発のお話 2. Kubernetes a. どんな人達が使っている? b. コンテナ c. 特徴 d. 開発者に対する恩恵 e. 運用者に対する恩恵 3. まとめ a. 完璧なプラットフォームでは無い b. よし、とりあえず触ってみよう ( 次回告知 ) アジェンダ
  4. Kubernetes Sapporo for Beginners ソフトウェア開発のお話 • 多くのサービスは、ユーザーが安心して利用できなければ意味がない。 • 多くのサービスは、保守していくライフサイクルの方が長い。 ※ローンチするまでよりも、ローンチ後の保守・改修期間が長い。

    • 多くのサービスは、複数人で企画~運用までを行っている。 ぼくのPCで動く最強のプログラムができ たよ! ソースは無いけど、求めてる要件達成し たアセンブリあります! 保守・運用できないと意味ない
  5. Kubernetes Sapporo for Beginners Kubernetes https://kubernetes.io/ コンテナ化されたアプリケーションのデプロイ、スケールリング、また管理するための OSS。 Cloud Native

    Computing FoundationのGraduated Project。 Googleで利用されていたクラスタマネージャーの Borgの思想をもとに作られたもの。
  6. 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
  7. 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は何も関わり無いです。 勝手に引用してますが、謝る準備は万全です 。
  8. Kubernetes Sapporo for Beginners コンテナ? https://www.docker.com/resources/what-container • 起動速い • Image小さい

    • Kernelは共有 Windowsでも動く。 ※VMを使用。 コンテナ=Dockerではない。
  9. Kubernetes Sapporo for Beginners コンテナ? どれくらい小さい? Hello World的なAPIを返すWebアプリケーションだと…。 imageの種類 image

    size 起動するまでの時間 (※1) golangのアプリケーション 9MB ~5秒 Spring BootのJavaアプリケーション 85MB ~5秒 ※1…ウォームアップ時間は含んでいません。また、 CPU: 100ms~300msを与えた場合の時間です。
  10. Kubernetes Sapporo for Beginners どこまで管理? CaaS ( Container as a

    Service ) • GCP :Google Kubernetes Engine • AWS :EKS • Azure :Azure Kubernetes Servie Knative (のはず)
  11. Kubernetes Sapporo for Beginners Kubernetesの特徴 • ベンダー・ロックインされない • 各種リソース定義すれば簡単にデプロイできる •

    自動修復、自動配置、自動スケーリング、ローリングアップデートが行える • アプリケーションのリソース (CPU/Memory/Disk)の確保・抑制を行える 開発担当に対する恩恵 ( 主にDockerの利点 ) 運用担当に対する恩恵 • 環境構築が楽になる • スケール試験が楽になる • 環境依存の問題が減る • 環境構築手順書、情報管理が楽になる ※環境作るための定義するもの→そのまま設計資料。 • 復旧作業が楽になる • スケーリングが楽になる • デプロイが楽になる
  12. 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
  13. 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
  14. Kubernetes Sapporo for Beginners 開発者に対する恩恵 develop image:sha:xxxx image:sha:xxxx image:1.0.0 通常はrevertしてソースから戻す。

    ものすごく緊急時は、imageも履歴として存在するので、1つ前 にタグ付けして戻したりもする。 CD(継続的デリバリ) がしやすい。素早いデプロイ、素早いロールバック。 Docker Kubernetes
  15. Kubernetes Sapporo for Beginners 開発者に対する恩恵 • Docker ( + docker

    compose ) を使う事によるメリットが大きい。 • Kubernetesがあると、下記のような場合に幸せになるかも ◦ クラスタリング(冗長化)構成でテストしたい ◦ リソース制限を色々変えて動かしたい ◦ Dockerとかあんま意識しない。ここら辺意識するのは一部の人 下記のような場合は、恩恵ほとんど無いと思います。 • 少人数で開発・運用してる。 • クラスタとかしない。1台運用での可用性で十分。 • PaaS、FaaS使うことが前提のサービス。
  16. 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
  17. 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 ブルー・グリーン デプロイ。
  18. Kubernetes Sapporo for Beginners 運用者に対する恩恵 • オートスケールもできる。 ( CPU使用率、独自のmetricsに基づく )

    • 手動スケールも簡単 ( kubectl scale deploy xxx --replicas=xx ) • LB自動で作れる。 • デプロイが楽。yamlファイル(Manifest)書き換えるだけ。 • immutableなイメージだからある程度安心。 ( 変なもの混入しづらい ) • Helmを使えば、環境複製も楽になるになるはず。
  19. Kubernetes Sapporo for Beginners 開発・運用に対する恩恵 • 多くのサービスは、ユーザーが安心して利用できなければ意味がない。 ◦ 自動復旧機能 ◦

    容易な水平スケール ◦ 容易なロールアウト、ロールバックのタスク管理 ◦ マイクロ・サービスのシステム・アーキテクチャにおける必要な機能が充実 • 多くのサービスは、保守していくライフサイクルの方が長い。 ◦ コンテナ技術による環境非依存 • 多くのサービスは、複数人で企画~運用までを行っている。 ◦ コンテナ技術による環境非依存 ◦ クラウドベンダーにロックインされないプラットフォーム
  20. Kubernetes Sapporo for Beginners 完成されたプラットフォームではない • 今もなお、ものすごい勢いでバージョンアップしてる • 周辺技術がいっぱいある (istio、helm…)。

    • 簡単なサービスなら、 FaaS、PaaS、BaaSで作った方が楽。 ※将来:Knativeまで出てくれば、運用面の管理が統一できるかも。 • シンプルな構成 ( 多くの分散技術を必要としない構成 ) なら、素直にマネージド・サービス使ったほう が楽。 • グローバルIP固定でホワイトリスト登録が必要なサービスと連携する時に面倒。 • マイクロサービスで開発しようと思うなら、必要になってくる。 • サービス指向アーキテクチャでのシステムだと、あると便利かもしれない。 • インフラエンジニアじゃなくても、作って壊せる。
  21. Kubernetes Sapporo for Beginners 次はさわってみよう! 知識と実践。次回、触っていきましょう!! WindowsもOK!MacもOK!GKEもOK!その他環境でも良いけど触ったことない! #1 Kubernetesの概要を知る #2

    ハンズオン:アプリケーション動かしてみる #3 ハンズオン:Deployments、StatefulSetでデプロイ体験 #4 ハンズオン:Configmap、Secretで環境毎の設定を変えてみる #5 ハンズオン:Helmを使ってみる
  22. Kubernetes Sapporo for Beginners その他:学びやすいドキュメント • O’REILLY - 入門 Kubernetes

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