Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Kubernetes introduction

1,817 views

Published on

kubernetes入門 (ContainerからKubernetesまで)
・主にdocker/kubernetesの話です。

関連リンク
・https://recruit.gmo.jp/engineer/jisedai/blog/kubernetes-introduction/

Published in: Engineering
  • Be the first to comment

Kubernetes introduction

  1. 1. GMOインターネット株式会社 次世代システム研究室 李 大範 (イ デボム) Kubernetes入門 ContainerからKubernetesまで
  2. 2. Kubernetes?
  3. 3. Kubernetes is Container Orchestration System
  4. 4. Kubernetes is Container Orchestration System
  5. 5. Kubernetes is Container Orchestration System
  6. 6. Kubernetes is Container Orchestration System
  7. 7. どこでも 同じ環境のように動く 軽量のアプリケーション実行環境 環境情報を「dockerfile」で記載しておくことによって どこでも同じような環境が作れる
  8. 8. どこでも 同じ環境のように動く
  9. 9. 同じ環境のように動く 軽量のアプリケーション実行環境 running a modern Linux kernel (3.2+ generally or 2.6.32+ for RHEL 6.5+, Fedora, & related) どこでも(Linux Kernel)
  10. 10. Kubernetes is Container Orchestration System
  11. 11. Kubernetes is Container Orchestration System
  12. 12. Kubernetes is Container Orchestration System VM Container
  13. 13. Kubernetes is Container Orchestration System HostのKernelを利用する
  14. 14. Kubernetes is Container Orchestration System VMより軽く起動・停止が早い
  15. 15. Dockerを利用するメリット1 私の環境では動いてましたが… →dockerfileを共有することで 同じ環境が提供できる!
  16. 16. 複数のVMを立ち上げに時間かかった →dockerを利用することによって起 動・停止早い(HostOSのkernelを利用) Dockerを利用するメリット2
  17. 17. Kubernetes is Container Orchestration System
  18. 18. Kubernetes is Container Orchestration System Automated container deployment Automated container scaling Container management
  19. 19. Kubernetes is Container Orchestration System
  20. 20. 19 Container Orchestrator Market Share 2017/3/26~2018/3/26 Google TrendからContainer OrchestratorのMarket Shareを 見るとDocker swarmやApache Mesosは平面化されて、 Kubernetesが一番注目されている。
  21. 21. Container Orchestrator Market Share
  22. 22. 21 ・ギリシャ語が語源で意味は操舵手 ・k8s (ubernete->8) called k-eight-s ・Originally designed by Google ( Borg->Omega->Kubernetes ) ・OSS (Apache License 2.0) ・CNCFからプロジェクトを運用 (特定の企業に依存しない) About Kubernetes 船の操舵手 (ソウダシュ) *CNCF(Cloud Native Computing Foundation) https://commons.wikimedia.org/wiki/File:RIGBY(1842)_Baltic_letters,_p1.054_HELMSMAN.jpg
  23. 23. 22 About Kubernetes ・多数のクラウドプロバイダを対応 (業界のスタンダードに)
  24. 24. Kubernetesは 何を解決するための システムなのか
  25. 25. 24 Dockerでできる ・ Containerの生成 ・ Containerの削除 ・ Volumeの生成 ・ Volumeの削除
  26. 26. 25 ・ Containerの生成 ・ Containerの削除 ・ Volumeの生成 ・ Volumeの削除 Dockerコンテナの ライフサイクルは Docker自身で管理する
  27. 27. 26 Dockerでできない ・複数のNodeに対してのデプロイ ・スケーリング ・Containerのアップデート ・Container障害時の復旧 ・Containerの負荷分散
  28. 28. 27 ・ Containerの生成 ・ Containerの削除 ・ Volumeの生成 ・ Volumeの削除 Dockerだけだと開発環境で の運用は問題ない。 だが本番のサービスを運用 するにはものたりない。
  29. 29. 28https://blogs.vmware.com/cloudnative/2018/01/23/containers-kubernetes-benefits/
  30. 30. Dockerを 本番で安定・安全に 運用するには Docker+α が必要。
  31. 31. 30 Infra (Public/Private Cloud, etc…) Operation System Operation System Operation System Container Runtime Container Runtime Container Runtime Container Orchestration (Containerized App Management, Deployment, Scheduling) Containerized App Containerized App Containerized App Containerized App Containerized App
  32. 32. Container Orchestration System Kubernetes
  33. 33. Kubernetesは どのようにコンテナを 管理するのか
  34. 34. 33 Kubernetes Basic Concepts Node (物理マシン、仮想マシン) Kubernetes Cluster Pod Pod Pod コン テナ コン テナ コン テナ コン テナ コン テナ コン テナ Kubernetesではひとつまたは複数のコンテナを 「Pod」との単位で管理している Node (VM)
  35. 35. 34 Kubernetes Cluster Node Node Node (s)Master CLI API UI API Server etcd cluster Scheduler Controller Manager kubelet Kube-proxy pod pod pod pod containercontainer container container container container container container Internet
  36. 36. Kubernetesは どのようにコンテナを 管理するのか
  37. 37. 36 Kubernetes Component - Master API Server etcd cluster Scheduler Controller Manager Masterは 各Nodeに対してデプロイ、 アップデート、スケーリングなど の指示を出す役割 API Server ・コンテナクラスタのすべての操作を コントロールする ・RESTful API ・利用するにはkubernetes dashboardを 利用したUIでのアクセスやkubectlコマンドを 利用したCLIでのアクセスがある
  38. 38. 37 Kubernetes Component - Master API Server etcd cluster Scheduler Controller Manager Masterは 各Nodeに対してデプロイ、 アップデート、スケーリングなど の指示を出す役割 Scheduler ・アプリケーションの配置を行う。 ・podをどのnodeに配置するかを決める。
  39. 39. 38 Kubernetes Component - Master API Server etcd cluster Scheduler Controller Manager Masterは 各Nodeに対してデプロイ、 アップデート、スケーリングなど の指示を出す役割 Controller Manager ・バックグラウンドでクラスタのコントローラ を管理 ・APIサーバを利用しクラスタ状態を監視。 ・クラスタを望ましい状態にする ・Replication Controller, Endpoint Controller…
  40. 40. 39 Kubernetes Component - Master API Server etcd cluster Scheduler Controller Manager Masterは 各Nodeに対してデプロイ、 アップデート、スケーリングなど の指示を出す役割 etcd Cluster ・k8sのクラスタ情報を保存する ・secret, pod state, volume address
  41. 41. 40 Kubernetes Component – (worker)Node Node Node kubelet Kube-proxy pod pod pod pod containercontainer container container container container container container (Worker)Node は podが動作する環境 kubelet ・node agentの役割。 ・マスタとの通信でnodeに指示を出す ・k8sで作られたコンテナのみ管理 ・HTTP endpoint ・HTTP server https://kubernetes.io/docs/reference/generated/kubelet/
  42. 42. 41 Kubernetes Component – (worker)Node Node Node kubelet Kube-proxy pod pod pod pod containerMySQL container container app Php-fpm Nginx container (Worker)Node は podが動作する環境 pod ・containerのグループ ・k8sのミニマムなデプロイ単位 ・Podの中のコンテナはStroageや namespaces、portを共有
  43. 43. 42 Kubernetes Component – (worker)Node Node Node kubelet Kube-proxy pod pod pod pod containercontainer container container container container container container (Worker)Node は podが動作する環境 kube-proxy ・Kubernetes network proxy ・各Nodeに動作する ・特定なPortを開けてPod外からの アクセスができるようにする https://kubernetes.io/docs/reference/generated/kube-proxy/
  44. 44. デモします!
  45. 45. 44 デモでのポイント ・負荷に柔軟なシステムを作りたい →Horizontal Pod Scaling検証 ・障害に強いシステムを作りたい →Self-healing検証
  46. 46. 45 デモでのポイント ・スケーリング(Scaling) →負荷状況によってシステム または運用側がPodを増やす ・自動回復(Self-healing) →Podが急に停止した場合でも 正常な状態に戻す
  47. 47. 46 デモ環境(ローカル) ・minikube ・kubernetes on Docker ・…
  48. 48. 47 環境設定(Mac)
  49. 49. 48 デモ環境(kubernetes on Docker) Docker 18.03.0-ce --- k8s v1.9.2
  50. 50. 49 デモ環境(kubernetes on Docker) ・クラスタ起動確認 $ kubectl cluster-info
  51. 51. 50 Horizontal Pod Scaling シナリオ 1. PHP+Apacheの組み合わせでアプリケ ーションを二つ立ち上がっていてロードバ ランシングされている 2. 負荷急に上がりすぎ現状の構成で負荷 分散ができなくなった
  52. 52. demo
  53. 53. 52 シナリオ 1. サービスが何らかの理由で停止された (今回は手動でpodを削除) 2.それから自動的に回復されるのを確認 Self-healing
  54. 54. demo
  55. 55. 54 ■Summary ▪ Kubernetesはスタンダード(かも) ▪ Kubernetesは本番でコンテナされているアプリケーショ ンを管理してくれる ▪ Googleからスタートしたプロジェクトで今はOSSとして CNCFが管理している。(今は卒業生) ▪ Kubernetesはひとつのmasterと複数の(Worker)Node でクラスタ構成になっている ▪ 今ではローカル環境でも簡単にKubernetesが利用できる( minikube, kubernetes on dockerなど )
  56. 56. ありがとうございました。

×