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

kubernetes 浅瀬 dive / kubernetes shallow dive

66487f93d23ed4f64752cffbafdb938a?s=47 convto
June 19, 2019

kubernetes 浅瀬 dive / kubernetes shallow dive

kubernetes の海の浅瀬に入っていくための資料

66487f93d23ed4f64752cffbafdb938a?s=128

convto

June 19, 2019
Tweet

More Decks by convto

Other Decks in Technology

Transcript

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

  2. convto jisibari Twitter: @convto Github: convto 2

  3. 浅瀬 dive って何

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

  5. 水深 Deep dive

  6. 水深 Deep dive 浅瀬 dive

  7. 水深 Deep dive 浅瀬 dive

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

  9. もくじ - 浅瀬を目指して: kubernetesとは - まずはビーチに行こう: gitとの共通点 - 準備体操: コンテナやサーバーの扱いを知る

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

    - 浅瀬 dive: pod を管理するリソースたち - 沖にでるためには - おわりに
  11. Kubernetes とは

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

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

  14. 浅瀬すぎる

  15. 水深

  16. 水深

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

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

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

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

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

  22. もくじ - 浅瀬を目指して: kubernetesとは - まずはビーチに行こう: gitとの共通点 - 準備体操: コンテナやサーバーの扱いを知る

    - 浅瀬 dive: pod を管理するリソースたち - 沖にでるためには - おわりに
  23. git とは

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

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

      
  26. にている

  27. Kubernetes と git の共通点 - 現実世界の情報を抽象化する - 抽象化されたリソースを CLI を使って操作

    - 高度なことやろうとするのは難しい - が、使うだけならそこまででもない - 分散システムなので雑にやると不整合で死ぬ
  28. Kubernetes と git のちがうところ - Kubernetes は詳細を yaml で管理する <->

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

    git は詳 細もCLIで頑張る - Kubernetes はリソースが多い(10以上) <-> git は だいたい commit の操作 Git よりでかいけどノリはとても似ている
  30. Git と似てる 警戒しすぎなくてもい い

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

  32. もくじ - 浅瀬を目指して: kubernetesとは - まずはビーチに行こう: gitとの共通点 - 準備体操: コンテナやサーバーの扱いを知る

    - 浅瀬 dive: pod を管理するリソースたち - 沖にでるためには - おわりに
  33. コンテナの扱い

  34. コンテナは pod というリソースで管理 - Pod にはだいたい一つのコンテナが載ってる - 条件によってはたまに複数 - アプリケーションが動くのはここ

    - Pod の配置を指示してインフラを作っていく
  35. だいたいおなじ コンテナ pod

  36. サーバーの扱い

  37. サーバーは node というリソースで管理 - master node が構成管理の仕事をしてくれます - Node に

    pod がじゃんじゃか載っていく
  38. node1 node3 node2 pod pod pod pod pod pod pod

    pod pod pod
  39. 準備完了

  40. もくじ - 浅瀬を目指して: kubernetes とは - まずはビーチに行こう: git との共通点 -

    準備体操: コンテナやサーバーの扱いを知る - 浅瀬 dive: pod を管理するリソースたち - 沖にでるためには - おわりに
  41. 同じpodを複数配置し たい

  42. ReplicaSet - Pod を管理し、ある pod を任意の数つくる - Pod を監視し指定した数より減っていれば自動で 復旧させる

    - どの node に pod が配置されるかはコントロールさ れない(ある程度配置ルールは決められる)
  43. node1 node3 node2 pod pod pod pod

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

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

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

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

  48. DaemonSet - Pod を管理し、任意の pod をすべての node に1つ ずつ設置する -

    Fluentd や監視エージェントなど、確実にすべての 物理サーバーに置きたいものに利用する - GKE ではデフォで DeamonSet の fluentd がいる
  49. node1 node3 node2 pod pod pod

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

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

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

  53. Job, CronJob - Job は一度だけ pod を起動する - CronJob は

    Job を cron 実行する - 詳しいことは省略
  54. podとの関係図

  55. Pod ReplicaSet Job Deployment CronJob DaemonSet StatefulSet

  56. Pod ReplicaSet Job Deployment CronJob DaemonSet StatefulSet こいつらまとめて Workload リソース

    という名前がついてます
  57. Enjoy 浅瀬

  58. もくじ - 浅瀬を目指して: kubernetesとは - まずはビーチに行こう: gitとの共通点 - 準備体操: コンテナやサーバーの扱いを知る

    - 浅瀬 dive: pod を管理するリソースたち - 沖にでるためには - おわりに
  59. 現実のアプリはまだやることがある - 環境変数の管理 - LBなどの設定 - 開発者ごとの認証、認可 - オートスケールの設定 -

    etc...
  60. これらもKubernetes で管理できる

  61. 現実のアプリはまだやることがある - 環境変数の管理 Secret など - LBなどの設定 LoadBrancer Service など

    - 開発者ごとの認証、認可 Service Account - オートスケールの設定 HorizontalPodAutoscaler な ど - etc...
  62. どういうリソースがある かわからない

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

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

  65. とりあえず試したい

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

  67. よい船旅を!

  68. もくじ - 浅瀬を目指して: kubernetesとは - まずはビーチに行こう: gitとの共通点 - 準備体操: コンテナやサーバーの扱いを知る

    - 浅瀬 dive: pod を管理するリソースたち - 沖にでるためには - おわりに
  69. まとめ - Kubernetes は実は git に似ている - はじめの一歩はそこまで難しくない - 一部を使うだけでもメリットはある

    - Pod を管理する様々なリソースがある - 一次ソースや体系的なソースで勉強すると良さそ う(ネット記事とかはしんどい印象)
  70. 次回予告

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

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