Kubernetes introduction

DAEBUM LEE
DAEBUM LEEPapa at -
GMOインターネット株式会社
次世代システム研究室
李 大範 (イ デボム)
Kubernetes入門
ContainerからKubernetesまで
Kubernetes?
Kubernetes is Container
Orchestration System
Kubernetes is Container
Orchestration System
Kubernetes is Container
Orchestration System
Kubernetes is Container
Orchestration System
どこでも
同じ環境のように動く
軽量のアプリケーション実行環境
環境情報を「dockerfile」で記載しておくことによって
どこでも同じような環境が作れる
どこでも
同じ環境のように動く
同じ環境のように動く
軽量のアプリケーション実行環境
running a modern Linux kernel
(3.2+ generally or 2.6.32+ for RHEL 6.5+, Fedora, & related)
どこでも(Linux Kernel)
Kubernetes is Container
Orchestration System
Kubernetes is Container
Orchestration System
Kubernetes is Container
Orchestration System
VM
Container
Kubernetes is Container
Orchestration System
HostのKernelを利用する
Kubernetes is Container
Orchestration System
VMより軽く起動・停止が早い
Dockerを利用するメリット1
私の環境では動いてましたが…
→dockerfileを共有することで
同じ環境が提供できる!
複数のVMを立ち上げに時間かかった
→dockerを利用することによって起
動・停止早い(HostOSのkernelを利用)
Dockerを利用するメリット2
Kubernetes is Container
Orchestration System
Kubernetes is Container
Orchestration System
Automated container deployment
Automated container scaling
Container management
Kubernetes is Container
Orchestration System
19
Container Orchestrator Market Share
2017/3/26~2018/3/26
Google TrendからContainer OrchestratorのMarket Shareを
見るとDocker swarmやApache Mesosは平面化されて、
Kubernetesが一番注目されている。
Container
Orchestrator
Market Share
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
22
About Kubernetes
・多数のクラウドプロバイダを対応 (業界のスタンダードに)
Kubernetesは
何を解決するための
システムなのか
24
Dockerでできる
・ Containerの生成
・ Containerの削除
・ Volumeの生成
・ Volumeの削除
25
・ Containerの生成
・ Containerの削除
・ Volumeの生成
・ Volumeの削除
Dockerコンテナの
ライフサイクルは
Docker自身で管理する
26
Dockerでできない
・複数のNodeに対してのデプロイ
・スケーリング
・Containerのアップデート
・Container障害時の復旧
・Containerの負荷分散
27
・ Containerの生成
・ Containerの削除
・ Volumeの生成
・ Volumeの削除
Dockerだけだと開発環境で
の運用は問題ない。
だが本番のサービスを運用
するにはものたりない。
28https://blogs.vmware.com/cloudnative/2018/01/23/containers-kubernetes-benefits/
Dockerを
本番で安定・安全に
運用するには
Docker+α が必要。
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
Container
Orchestration System
Kubernetes
Kubernetesは
どのようにコンテナを
管理するのか
33
Kubernetes Basic Concepts
Node
(物理マシン、仮想マシン)
Kubernetes Cluster
Pod Pod Pod
コン
テナ
コン
テナ
コン
テナ
コン
テナ
コン
テナ
コン
テナ
Kubernetesではひとつまたは複数のコンテナを
「Pod」との単位で管理している
Node
(VM)
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
Kubernetesは
どのようにコンテナを
管理するのか
36
Kubernetes Component - Master
API Server
etcd cluster
Scheduler
Controller
Manager
Masterは
各Nodeに対してデプロイ、
アップデート、スケーリングなど
の指示を出す役割
API Server
・コンテナクラスタのすべての操作を
コントロールする
・RESTful API
・利用するにはkubernetes dashboardを
利用したUIでのアクセスやkubectlコマンドを
利用したCLIでのアクセスがある
37
Kubernetes Component - Master
API Server
etcd cluster
Scheduler
Controller
Manager
Masterは
各Nodeに対してデプロイ、
アップデート、スケーリングなど
の指示を出す役割
Scheduler
・アプリケーションの配置を行う。
・podをどのnodeに配置するかを決める。
38
Kubernetes Component - Master
API Server
etcd cluster
Scheduler
Controller
Manager
Masterは
各Nodeに対してデプロイ、
アップデート、スケーリングなど
の指示を出す役割
Controller Manager
・バックグラウンドでクラスタのコントローラ
を管理
・APIサーバを利用しクラスタ状態を監視。
・クラスタを望ましい状態にする
・Replication Controller, Endpoint Controller…
39
Kubernetes Component - Master
API Server
etcd cluster
Scheduler
Controller
Manager
Masterは
各Nodeに対してデプロイ、
アップデート、スケーリングなど
の指示を出す役割
etcd Cluster
・k8sのクラスタ情報を保存する
・secret, pod state, volume address
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/
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を共有
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
デモでのポイント
・負荷に柔軟なシステムを作りたい
→Horizontal Pod Scaling検証
・障害に強いシステムを作りたい
→Self-healing検証
45
デモでのポイント
・スケーリング(Scaling)
→負荷状況によってシステム
または運用側がPodを増やす
・自動回復(Self-healing)
→Podが急に停止した場合でも
正常な状態に戻す
46
デモ環境(ローカル)
・minikube
・kubernetes on Docker
・…
47
環境設定(Mac)
48
デモ環境(kubernetes on Docker)
Docker
18.03.0-ce
---
k8s v1.9.2
49
デモ環境(kubernetes on Docker)
・クラスタ起動確認
$ kubectl cluster-info
50
Horizontal Pod Scaling
シナリオ
1. PHP+Apacheの組み合わせでアプリケ
ーションを二つ立ち上がっていてロードバ
ランシングされている
2. 負荷急に上がりすぎ現状の構成で負荷
分散ができなくなった
demo
52
シナリオ
1. サービスが何らかの理由で停止された
(今回は手動でpodを削除)
2.それから自動的に回復されるのを確認
Self-healing
demo
54
■Summary
▪ Kubernetesはスタンダード(かも)
▪ Kubernetesは本番でコンテナされているアプリケーショ
ンを管理してくれる
▪ Googleからスタートしたプロジェクトで今はOSSとして
CNCFが管理している。(今は卒業生)
▪ Kubernetesはひとつのmasterと複数の(Worker)Node
でクラスタ構成になっている
▪ 今ではローカル環境でも簡単にKubernetesが利用できる(
minikube, kubernetes on dockerなど )
ありがとうございました。
1 of 56

More Related Content

What's hot(20)

Kubernetes超入門 with javaKubernetes超入門 with java
Kubernetes超入門 with java
Yasunari Tanaka4.6K views
Dockerを支える技術Dockerを支える技術
Dockerを支える技術
Etsuji Nakai82.1K views
Kubernetes雑にまとめてみた 2020年8月版Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版
VirtualTech Japan Inc.3.7K views
Istioサービスメッシュ入門Istioサービスメッシュ入門
Istioサービスメッシュ入門
Yoichi Kawasaki39.3K views
Docker & Kubernetes基礎Docker & Kubernetes基礎
Docker & Kubernetes基礎
Daisuke Hiraoka2K views
Kuberneteの運用を支えるGitOpsKuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOps
shunki fujiwara6.1K views

Similar to Kubernetes introduction(20)

Jenkins with DockerJenkins with Docker
Jenkins with Docker
Yahoo!デベロッパーネットワーク22.4K views
第10回しゃちほこオラクル倶楽部第10回しゃちほこオラクル倶楽部
第10回しゃちほこオラクル倶楽部
オラクルエンジニア通信307 views
Dockerことはじめ的なはなしDockerことはじめ的なはなし
Dockerことはじめ的なはなし
pinmarch_t Tada627 views
コンテナの基本 ~Docker実践~コンテナの基本 ~Docker実践~
コンテナの基本 ~Docker実践~
Ryosuke Uchiyama103 views
[GKE & Spanner 勉強会] GKE 入門[GKE & Spanner 勉強会] GKE 入門
[GKE & Spanner 勉強会] GKE 入門
Google Cloud Platform - Japan4K views
15分で分か(った気になれ)るDocker15分で分か(った気になれ)るDocker
15分で分か(った気になれ)るDocker
Masahiro NAKAYAMA31.3K views
コンテナって何?コンテナって何?
コンテナって何?
Hiroyuki Numao272 views
Dockerを使ってみようDockerを使ってみよう
Dockerを使ってみよう
GIG inc.1.3K views

Kubernetes introduction

Editor's Notes

  1. https://cloudblogs.microsoft.com/windowsserver/2018/03/20/introducing-windows-server-2019-now-available-in-preview/ Windows server 2019 → linux / kubernetes support
  2. 操舵手(ソウダシュ)
  3. Kubernetes feature Kubernetes architecture Kubernetes demo
  4. https://rominirani.com/tutorial-getting-started-with-kubernetes-with-docker-on-mac-7f58467203fd https://medium.com/@lizrice/accessing-an-application-on-kubernetes-in-docker-1054d46b64b1
  5. https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/ https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/ https://medium.com/@marko.luksa/kubernetes-autoscaling-based-on-custom-metrics-without-using-a-host-port-b783ed6241ac
  6. 3min
  7. 3min