SlideShare una empresa de Scribd logo
1 de 56
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など )
ありがとうございました。

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
 
Harbor RegistryのReplication機能
Harbor RegistryのReplication機能Harbor RegistryのReplication機能
Harbor RegistryのReplication機能
 
DockerとKubernetesをかけめぐる
DockerとKubernetesをかけめぐるDockerとKubernetesをかけめぐる
DockerとKubernetesをかけめぐる
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
KubernetesバックアップツールVeleroとちょっとした苦労話
KubernetesバックアップツールVeleroとちょっとした苦労話KubernetesバックアップツールVeleroとちょっとした苦労話
KubernetesバックアップツールVeleroとちょっとした苦労話
 
GKE multi-cluster Ingress
GKE multi-cluster IngressGKE multi-cluster Ingress
GKE multi-cluster Ingress
 
[Cloud OnAir] Bigtable に迫る!基本機能も含めユースケースまで丸ごと紹介 2018年8月30日 放送
[Cloud OnAir] Bigtable に迫る!基本機能も含めユースケースまで丸ごと紹介 2018年8月30日 放送[Cloud OnAir] Bigtable に迫る!基本機能も含めユースケースまで丸ごと紹介 2018年8月30日 放送
[Cloud OnAir] Bigtable に迫る!基本機能も含めユースケースまで丸ごと紹介 2018年8月30日 放送
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホンそろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
 
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
Ingress on Azure Kubernetes Service
Ingress on Azure Kubernetes ServiceIngress on Azure Kubernetes Service
Ingress on Azure Kubernetes Service
 
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
 
[GKE & Spanner 勉強会] GKE 入門
[GKE & Spanner 勉強会] GKE 入門[GKE & Spanner 勉強会] GKE 入門
[GKE & Spanner 勉強会] GKE 入門
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
 
Kuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOpsKuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOps
 

Similar a Kubernetes introduction

Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Masahiro Nagano
 

Similar a Kubernetes introduction (20)

AKSとTerraformでKubernetesクラスター作成
AKSとTerraformでKubernetesクラスター作成AKSとTerraformでKubernetesクラスター作成
AKSとTerraformでKubernetesクラスター作成
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
 
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみたKubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
 
Jenkins with Docker
Jenkins with DockerJenkins with Docker
Jenkins with Docker
 
第10回しゃちほこオラクル倶楽部
第10回しゃちほこオラクル倶楽部第10回しゃちほこオラクル倶楽部
第10回しゃちほこオラクル倶楽部
 
Dockerことはじめ的なはなし
Dockerことはじめ的なはなしDockerことはじめ的なはなし
Dockerことはじめ的なはなし
 
Dockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようDockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しよう
 
コンテナの基本 ~Docker実践~
コンテナの基本 ~Docker実践~コンテナの基本 ~Docker実践~
コンテナの基本 ~Docker実践~
 
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例
 
15分で分か(った気になれ)るDocker
15分で分か(った気になれ)るDocker15分で分か(った気になれ)るDocker
15分で分か(った気になれ)るDocker
 
コンテナって何?
コンテナって何?コンテナって何?
コンテナって何?
 
Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法
 
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
 
Azure container as a service v0.1.19.1213
Azure container as a service v0.1.19.1213Azure container as a service v0.1.19.1213
Azure container as a service v0.1.19.1213
 
Dockerを使ってみよう
Dockerを使ってみようDockerを使ってみよう
Dockerを使ってみよう
 
Getting started with Windows Containers
Getting started with Windows ContainersGetting started with Windows Containers
Getting started with Windows Containers
 
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもんDocker Swarm モード にゅうもん
Docker Swarm モード にゅうもん
 
Infra: Kubernetes and GKE, Network
Infra: Kubernetes and GKE, NetworkInfra: Kubernetes and GKE, Network
Infra: Kubernetes and GKE, Network
 
捕鯨!詳解docker
捕鯨!詳解docker捕鯨!詳解docker
捕鯨!詳解docker
 
DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念
 

Kubernetes introduction

Notas del editor

  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