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

Kubernetes入門

 Kubernetes入門

社内プレゼン用
Kubernetes Introduction

leedaebum

March 30, 2018
Tweet

Other Decks in Technology

Transcript

  1. GMOインターネット株式会社
    次世代システム研究室
    李 大範 (イ デボム)
    Kubernetes入門
    ContainerからKubernetesまで

    View Slide

  2. Kubernetes?

    View Slide

  3. Kubernetes is Container
    Orchestration System

    View Slide

  4. Kubernetes is Container
    Orchestration System

    View Slide

  5. Kubernetes is Container
    Orchestration System

    View Slide

  6. Kubernetes is Container
    Orchestration System

    View Slide

  7. どこでも
    同じ環境のように動く
    軽量のアプリケーション実行環境
    環境情報を「dockerfile」で記載しておくことによって
    どこでも同じような環境が作れる

    View Slide

  8. どこでも
    同じ環境のように動く

    View Slide

  9. 同じ環境のように動く
    軽量のアプリケーション実行環境
    running a modern Linux kernel
    (3.2+ generally or 2.6.32+ for RHEL 6.5+, Fedora, & related)
    どこでも(Linux Kernel)

    View Slide

  10. Kubernetes is Container
    Orchestration System

    View Slide

  11. Kubernetes is Container
    Orchestration System

    View Slide

  12. Kubernetes is Container
    Orchestration System
    VM
    Container

    View Slide

  13. Kubernetes is Container
    Orchestration System
    HostのKernelを利用する

    View Slide

  14. Kubernetes is Container
    Orchestration System
    VMより軽く起動・停止が早い

    View Slide

  15. Dockerを利用するメリット1
    私の環境では動いてましたが…
    →dockerfileを共有することで
    同じ環境が提供できる!

    View Slide

  16. 複数のVMを立ち上げに時間かかった
    →dockerを利用することによって起
    動・停止早い(HostOSのkernelを利用)
    Dockerを利用するメリット2

    View Slide

  17. Kubernetes is Container
    Orchestration System

    View Slide

  18. Kubernetes is Container
    Orchestration System
    Automated container deployment
    Automated container scaling
    Container management

    View Slide

  19. Kubernetes is Container
    Orchestration System

    View Slide

  20. 19
    Container Orchestrator Market Share
    2017/3/26~2018/3/26
    Google TrendからContainer OrchestratorのMarket Shareを
    見るとDocker swarmやApache Mesosは平面化されて、
    Kubernetesが一番注目されている。

    View Slide

  21. Container
    Orchestrator
    Market Share

    View Slide

  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

    View Slide

  23. 22
    About Kubernetes
    ・多数のクラウドプロバイダを対応 (業界のスタンダードに)

    View Slide

  24. Kubernetesは
    何を解決するための
    システムなのか

    View Slide

  25. 24
    Dockerでできる
    ・ Containerの生成
    ・ Containerの削除
    ・ Volumeの生成
    ・ Volumeの削除

    View Slide

  26. 25
    ・ Containerの生成
    ・ Containerの削除
    ・ Volumeの生成
    ・ Volumeの削除
    Dockerコンテナの
    ライフサイクルは
    Docker自身で管理する

    View Slide

  27. 26
    Dockerでできない
    ・複数のNodeに対してのデプロイ
    ・スケーリング
    ・Containerのアップデート
    ・Container障害時の復旧
    ・Containerの負荷分散

    View Slide

  28. 27
    ・ Containerの生成
    ・ Containerの削除
    ・ Volumeの生成
    ・ Volumeの削除
    Dockerだけだと開発環境で
    の運用は問題ない。
    だが本番のサービスを運用
    するにはものたりない。

    View Slide

  29. 28
    https://blogs.vmware.com/cloudnative/2018/01/23/containers-kubernetes-benefits/

    View Slide

  30. Dockerを
    本番で安定・安全に
    運用するには
    Docker+α が必要。

    View Slide

  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

    View Slide

  32. Container
    Orchestration System
    Kubernetes

    View Slide

  33. Kubernetesは
    どのようにコンテナを
    管理するのか

    View Slide

  34. 33
    Kubernetes Basic Concepts
    Node
    (物理マシン、仮想マシン)
    Kubernetes Cluster
    Pod Pod Pod
    コン
    テナ
    コン
    テナ
    コン
    テナ
    コン
    テナ
    コン
    テナ
    コン
    テナ
    Kubernetesではひとつまたは複数のコンテナを
    「Pod」との単位で管理している
    Node
    (VM)

    View Slide

  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
    container
    container
    container
    container
    container
    container
    container
    container
    Internet

    View Slide

  36. Kubernetesは
    どのようにコンテナを
    管理するのか

    View Slide

  37. 36
    Kubernetes Component - Master
    API Server
    etcd cluster
    Scheduler
    Controller
    Manager
    Masterは
    各Nodeに対してデプロイ、
    アップデート、スケーリングなど
    の指示を出す役割
    API Server
    ・コンテナクラスタのすべての操作を
    コントロールする
    ・RESTful API
    ・利用するにはkubernetes dashboardを
    利用したUIでのアクセスやkubectlコマンドを
    利用したCLIでのアクセスがある

    View Slide

  38. 37
    Kubernetes Component - Master
    API Server
    etcd cluster
    Scheduler
    Controller
    Manager
    Masterは
    各Nodeに対してデプロイ、
    アップデート、スケーリングなど
    の指示を出す役割
    Scheduler
    ・アプリケーションの配置を行う。
    ・podをどのnodeに配置するかを決める。

    View Slide

  39. 38
    Kubernetes Component - Master
    API Server
    etcd cluster
    Scheduler
    Controller
    Manager
    Masterは
    各Nodeに対してデプロイ、
    アップデート、スケーリングなど
    の指示を出す役割
    Controller Manager
    ・バックグラウンドでクラスタのコントローラ
    を管理
    ・APIサーバを利用しクラスタ状態を監視。
    ・クラスタを望ましい状態にする
    ・Replication Controller, Endpoint Controller…

    View Slide

  40. 39
    Kubernetes Component - Master
    API Server
    etcd cluster
    Scheduler
    Controller
    Manager
    Masterは
    各Nodeに対してデプロイ、
    アップデート、スケーリングなど
    の指示を出す役割
    etcd Cluster
    ・k8sのクラスタ情報を保存する
    ・secret, pod state, volume address

    View Slide

  41. 40
    Kubernetes Component – (worker)Node
    Node
    Node
    kubelet Kube-proxy
    pod
    pod
    pod
    pod
    container
    container
    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/

    View Slide

  42. 41
    Kubernetes Component – (worker)Node
    Node
    Node
    kubelet Kube-proxy
    pod
    pod
    pod
    pod
    container
    MySQL
    container
    container
    app
    Php-fpm
    Nginx
    container
    (Worker)Node は
    podが動作する環境
    pod
    ・containerのグループ
    ・k8sのミニマムなデプロイ単位
    ・Podの中のコンテナはStroageや
    namespaces、portを共有

    View Slide

  43. 42
    Kubernetes Component – (worker)Node
    Node
    Node
    kubelet Kube-proxy
    pod
    pod
    pod
    pod
    container
    container
    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/

    View Slide

  44. デモします!

    View Slide

  45. 44
    デモでのポイント
    ・負荷に柔軟なシステムを作りたい
    →Horizontal Pod Scaling検証
    ・障害に強いシステムを作りたい
    →Self-healing検証

    View Slide

  46. 45
    デモでのポイント
    ・スケーリング(Scaling)
    →負荷状況によってシステム
    または運用側がPodを増やす
    ・自動回復(Self-healing)
    →Podが急に停止した場合でも
    正常な状態に戻す

    View Slide

  47. 46
    デモ環境(ローカル)
    ・minikube
    ・kubernetes on Docker
    ・…

    View Slide

  48. 47
    環境設定(Mac)

    View Slide

  49. 48
    デモ環境(kubernetes on Docker)
    Docker
    18.03.0-ce
    ---
    k8s v1.9.2

    View Slide

  50. 49
    デモ環境(kubernetes on Docker)
    ・クラスタ起動確認
    $ kubectl cluster-info

    View Slide

  51. 50
    Horizontal Pod Scaling
    シナリオ
    1. PHP+Apacheの組み合わせでアプリケ
    ーションを二つ立ち上がっていてロードバ
    ランシングされている
    2. 負荷急に上がりすぎ現状の構成で負荷
    分散ができなくなった

    View Slide

  52. demo

    View Slide

  53. 52
    シナリオ
    1. サービスが何らかの理由で停止された
    (今回は手動でpodを削除)
    2.それから自動的に回復されるのを確認
    Self-healing

    View Slide

  54. demo

    View Slide

  55. 54
    ■Summary
    ▪ Kubernetesはスタンダード(かも)
    ▪ Kubernetesは本番でコンテナされているアプリケーショ
    ンを管理してくれる
    ▪ Googleからスタートしたプロジェクトで今はOSSとして
    CNCFが管理している。(今は卒業生)
    ▪ Kubernetesはひとつのmasterと複数の(Worker)Node
    でクラスタ構成になっている
    ▪ 今ではローカル環境でも簡単にKubernetesが利用できる(
    minikube, kubernetes on dockerなど )

    View Slide

  56. ありがとうございました。

    View Slide