$30 off During Our Annual Pro Sale. View Details »

kubernetes 浅瀬 dive / kubernetes shallow dive

convto
June 19, 2019

kubernetes 浅瀬 dive / kubernetes shallow dive

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

convto

June 19, 2019
Tweet

More Decks by convto

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

  3. 浅瀬 dive って何

    View Slide

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

    View Slide

  5. 水深
    Deep dive

    View Slide

  6. 水深
    Deep dive
    浅瀬 dive

    View Slide

  7. 水深
    Deep dive
    浅瀬 dive

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  11. Kubernetes とは

    View Slide

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

    View Slide

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

    View Slide

  14. 浅瀬すぎる

    View Slide

  15. 水深

    View Slide

  16. 水深

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  23. git とは

    View Slide

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

    View Slide

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

    View Slide

  26. にている

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  33. コンテナの扱い

    View Slide

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

    View Slide

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

    View Slide

  36. サーバーの扱い

    View Slide

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

    View Slide

  38. node1 node3
    node2
    pod pod
    pod pod
    pod
    pod
    pod
    pod
    pod
    pod

    View Slide

  39. 準備完了

    View Slide

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

    View Slide

  41. 同じpodを複数配置し
    たい

    View Slide

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

    View Slide

  43. node1 node3
    node2
    pod
    pod pod
    pod

    View Slide

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

    View Slide

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

    View Slide

  46. Deployment
    - ReplicaSet を管理し安全に更新する手段を提供す

    - いくつかの更新手段が提供されており、推奨され
    ているのは RollingUpdate という方法

    View Slide

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

    View Slide

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

    View Slide

  49. node1 node3
    node2
    pod pod pod

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  54. podとの関係図

    View Slide

  55. Pod ReplicaSet
    Job
    Deployment
    CronJob
    DaemonSet
    StatefulSet

    View Slide

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

    View Slide

  57. Enjoy 浅瀬

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    - etc...

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  65. とりあえず試したい

    View Slide

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

    View Slide

  67. よい船旅を!

    View Slide

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

    View Slide

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

    View Slide

  70. 次回予告

    View Slide

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

    View Slide

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

    View Slide