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

20191120_ビヨンド勉強会__21_Kubernetes_is_何_を語るために必要な基礎知識.pdf

2e2c49f6f3fa33b8f5aad5841774c211?s=47 nezumisannn
November 20, 2019

 20191120_ビヨンド勉強会__21_Kubernetes_is_何_を語るために必要な基礎知識.pdf

2e2c49f6f3fa33b8f5aad5841774c211?s=128

nezumisannn

November 20, 2019
Tweet

Transcript

  1. Kubernetes is 何? を語るために必要な基礎知識 ビヨンド勉強会 #21 2019/11/20 株式会社ビヨンド 寺岡 佑樹

  2. 自己紹介 resource “my_profile” “nezumisannn” { name = “Yuki.Teraoka” nickname =

    “ねずみさん家。” company = “beyond” job = “Site Reliability Engineer” twitter = “@yktr_sre” skills = [“terraform”,”packer”] }
  3. Kubernetes is 何?の前に

  4. このクジラの名前は? ↑ Dockerと呼ぶらしい

  5. Docker is 何? ・コンテナと呼ばれる仮想環境を提供するOSS ・開発はdotCloud社(現Docker社) ・仮想化という部分では同じだがハイパーバイザー型とは異なる ←上に乗ってるこれ

  6. コンテナ is 何? ・アプリケーション及び依存関係をパッケージ化して抽象化したもの ・複数のコンテナを同じマシンで実行してOSのカーネルを共有できる ・各コンテナはユーザー空間で独立したプロセスとして実行される ・コンテナ内にOSが含まれないためサイズが小さく起動が早い ・Dockerエンジンさえあればどこでも同じように動く

  7. つまり? コンテナ型 ハイパーバイザー型 https://www.docker.com/resources/what-container

  8. Kubernetesは ・Docker前提で動作するものです ・事前知識として覚えておきましょう

  9. Kubernetes is 何?

  10. Kubernetes is 何? ・アプリケーションのコンテナ群を統合管理するためのソフトウェア ・GoogleがBorgと呼ばれる内製ツールをOSSとして公開したのが始まり ・現在はCloud Native Computing Foundationがメンテナンスを行っている

  11. Kubernetesの注目度

  12. こんなツイートが Kubernetesはクラウド界のLinuxになりつつある

  13. kubernetesの注目度 ・Swarmを推奨していたDockerもKubernetesをネイティブにサポートした ・クラウドベンダーもKubernetes互換のマネージドサービスを多数リリース ・Elastic Kubernetes Service ・Google Kubernetes Engine ・Azure

    Kubernetes Service
  14. Kubernetesが 求められる背景

  15. Kubernetesが求められる背景 ・モノリスからマイクロサービスへ https://aws.amazon.com/jp/microservices/ ・単一サービス ・密結合 ・複数サービス ・疎結合 ・サービスごとの開発 /デプロイ ・障害範囲の分離

  16. マイクロサービスでは ・独立した複数のコンテナを効率的に管理できる仕組みが必要になる ・それがオーケストレーションツールと言われるもの ・Kubernetesもそのツールの中の1つ

  17. Kubernetesで 何ができるのか?

  18. Kubernetesで出来ること ・コンテナのスケジューリング ・ローリングアップデート ・オートスケーリング ・障害が発生したときのセルフヒーリング ・Infrastructure as Code

  19. Kubernetesの 主要コンポーネント

  20. Client Master Node https://github.com/kubernetes/kubernetes/blob/rel ease-1.3/docs/design/architecture.md

  21. Client https://github.com/kubernetes/kubernetes/blob/rel ease-1.3/docs/design/architecture.md

  22. kubectl ・Kubernetesを操作するためのCLIクライアント ・全ての操作はkube-apiserverを経由して実行される

  23. Master https://github.com/kubernetes/kubernetes/blob/rel ease-1.3/docs/design/architecture.md

  24. マスターコンポーネント ・etcd ・kube-apiserver ・kube-scheduler ・kube-controller-manager ・cloud-controller-manager ・kube-dns

  25. Master https://github.com/kubernetes/kubernetes/blob/rel ease-1.3/docs/design/architecture.md

  26. etcd ・Kubernetesのリソース永続化に利用される分散型KVS ・Kubernetesの全てのクラスタ情報の保存場所として利用される

  27. Master https://github.com/kubernetes/kubernetes/blob/rel ease-1.3/docs/design/architecture.md

  28. kube-apiserver ・kubernetesのAPIを提供するコンポーネント ・その他のコンポーネントはkube-apiserverを経由してリソースにアクセスする ・そのため直接etcdを参照するのはkube-apiserverのみになる ・その他クライアントの認証・認可も担当する ・負荷に応じてスケールアウトが可能

  29. Master https://github.com/kubernetes/kubernetes/blob/rel ease-1.3/docs/design/architecture.md

  30. kube-scheduler ・作成されたPodをNodeへ割り当てるためのスケジューラ ・kube-apiserverを経由してPod及びNodeのリソースを非同期に監視する ・Podが作成されたときに最適なNodeを選択してバインディングする

  31. Pod ・Kubernetesにおいてコンテナを動かすための最小単位   ・コンテナのイメージバージョンなどの基本情報 ・共有ストレージ(ボリューム) などが含まれる

  32. Node ・仮想マシンまたは物理マシンで構成されたワーカーマシン ・Podは必ずNode上で実行される

  33. Master https://github.com/kubernetes/kubernetes/blob/rel ease-1.3/docs/design/architecture.md

  34. kube-controller-manager ・Kubernetesオブジェクトを処理するコントローラの実行・管理を行うデーモン ・コントローラはkube-apiserverを経由してオブジェクトを非同期に監視する ・オブジェクトに変更があればコントローラによって変更が反映される ・オブジェクトには以下のようなものが存在する ・Deployment ・ReplicaSet

  35. cloud-controller-manager ・Kubernetesの基盤となっているクラウドプロバイダを管理するコンポーネント ・マネージドなロードバランサなどを扱うときに利用する

  36. kube-dns ・Kubernetesクラスタ内部で利用するDNS ・Serviceリソースが作成されるとkube-dnsにもレコードが登録される

  37. Serviceリソース ・Podへの接続エンドポイントを提供 ・トラフィックをルーティング

  38. Node https://github.com/kubernetes/kubernetes/blob/rel ease-1.3/docs/design/architecture.md

  39. ノードコンポーネント ・kubelet ・kube-proxy

  40. Node https://github.com/kubernetes/kubernetes/blob/rel ease-1.3/docs/design/architecture.md

  41. kubelet ・各Nodeで動作するエージェント ・kube-apiserverを監視して自ノードに割り当てられたPodを起動する

  42. Node https://github.com/kubernetes/kubernetes/blob/rel ease-1.3/docs/design/architecture.md

  43. kube-proxy ・Serviceリソースを元にルーティングを行う ・デフォルトでiptablesを利用してパケットの制御を行っている

  44. 独特の概念が多いですが ・基礎知識として覚えましょう ・実際に触ったときにより理解しやすくなります

  45. まとめ

  46. まとめ ・KubernetesでDockerコンテナ群を統合管理できる ・独自の概念が多いためまずは主要なコンポーネントを把握していくと良い ・実際に触ってみるのが早い(ニゲチャダメ)

  47. 終わり