dockerとkubernetesが作る未来

59
DockerKubernetesが作る未来

Upload: kazuto-kusama

Post on 09-Jul-2015

14.376 views

Category:

Technology


0 download

DESCRIPTION

EnterpriseOSSの勉強会で発表した資料です

TRANSCRIPT

Page 1: DockerとKubernetesが作る未来

Dockerと

Kubernetesが作る未来

Page 2: DockerとKubernetesが作る未来

PaaS勉強会 主宰

Kazuto Kusama @jacopen

Page 3: DockerとKubernetesが作る未来
Page 4: DockerとKubernetesが作る未来

Kazuto Kusama @jacopen

Enlightened L11

Page 5: DockerとKubernetesが作る未来

#DARSANA

Page 6: DockerとKubernetesが作る未来

PaaS勉強会

Cloud FoundryやOpenShift、その他様々なPaaSをテーマにした勉強会

Page 7: DockerとKubernetesが作る未来

PaaS勉強会

第23回 PaaS勉強会@蒲田 12/19 19:00~

http://paas.connpass.com/event/10059/

Page 8: DockerとKubernetesが作る未来

Docker、便利ですよね

Page 9: DockerとKubernetesが作る未来

お前それProduction環境でも 同じこと言えんの?

Page 10: DockerとKubernetesが作る未来

たとえば

1つのコンテナを上げるだけなら簡単

Page 11: DockerとKubernetesが作る未来

たとえば

1つのコンテナ内で複数のサービスを上げることは好ましくない

Page 12: DockerとKubernetesが作る未来

たとえば

サービスごとにコンテナを立ち上げる

Page 13: DockerとKubernetesが作る未来

たとえば

コンテナ間のネットワークはどうしよう・・・?

Page 14: DockerとKubernetesが作る未来

たとえば

ホストが異なった場合はどうしよう・・・

Page 15: DockerとKubernetesが作る未来

たとえば

たくさんのホストに、たくさんの コンテナを作る場合、どうしよう

Page 16: DockerとKubernetesが作る未来

たとえば

Dockerホストが障害でダウンしたらどうしよう

Page 17: DockerとKubernetesが作る未来

現在のDockerは、運用を 考えると足りないモノが多い

Page 18: DockerとKubernetesが作る未来

解決方法はある• シングルホストのネットワークは、Dockerの

Link機能で・・・ • マルチホストはAmbassadorパターンで・・・ • コンテナの管理はfigを・・・ • コンテナの監視はsensuで・・・ • 以下略

出来るけどやっぱり面倒

Page 19: DockerとKubernetesが作る未来

• 試験環境や開発環境なら、それでもいい

• Production環境でそれをやれるかどうか? 運用はどうする?

技術的にやれるかどうかと 運用出来るかどうかは別

Page 20: DockerとKubernetesが作る未来

そこで Kubernetes

Page 21: DockerとKubernetesが作る未来

これから話す、3つのポイント• Kubernetesとは何か

• 実際どんな感じに使えるのか

• Kubernetesと、どう関わっていくか

Page 22: DockerとKubernetesが作る未来

Kubernetesとは

Page 23: DockerとKubernetesが作る未来

Kubernetesとは• Googleが公開した、コンテナ管理のツール

• 複数のホストにまたがるコンテナの管理

• 長いのでk8sって略されることが多い

Page 24: DockerとKubernetesが作る未来

Kubernetesで実現できること✓ 複数ホストにコンテナを展開

✓ 関連するコンテナごとにグルーピング

✓ コンテナの死活監視

✓ コンテナ間のネットワーク

✓ コンテナの負荷分散

Page 25: DockerとKubernetesが作る未来

様々なベンダーが支持を表明• Docker

• Microsoft

• IBM

• Red Hat

• CoreOS

Page 26: DockerとKubernetesが作る未来

いろんな環境で使えます• Google Compute Engine • Microsoft Azure • AWS • Azure • CoreOS • vSphere • Vagrant

Page 27: DockerとKubernetesが作る未来

実際に使ってみよう

Page 28: DockerとKubernetesが作る未来

Master Minion

2つの役割

管理するやつ コンテナ動かすやつ

それぞれVM もしくは ベアメタル

Page 29: DockerとKubernetesが作る未来

Master

Minion

実験環境

Minion

Minion Minion

Page 30: DockerとKubernetesが作る未来

Master

Minion

MasterのAPIを クライアントツールで叩く

Minion

Minion Minion

API

client

Page 31: DockerとKubernetesが作る未来

$ ./cluster/kubecfg.sh -p 8080:80 run dockerfile/nginx 2 myNginx

Page 32: DockerとKubernetesが作る未来

Master

Minion

Replication Controllerが 複数ホストのコンテナを監視

Minion

Minion Minion

API

Replication Controller

Page 33: DockerとKubernetesが作る未来

$ ./cluster/kubecfg.sh resize myNginx 3

Master

Minion Minion

Minion Minion

API

Replication Controller

Page 34: DockerとKubernetesが作る未来

Master

Minion Minion

Minion Minion

API

Replication Controller

コンテナの数が減ったら 自動で立ち上げる

Page 35: DockerとKubernetesが作る未来

正確には「Pod」単位で管理

コンテナ

コンテナ

Pod

Page 36: DockerとKubernetesが作る未来

$ ./cluster/kubecfg.sh -c service.json create services

{ "id": "frontend", "kind": "Service", "apiVersion": "v1beta1", "port": 8000, "containerPort": 80, "selector": { "name": "nginx" }, "labels": { "name": "frontend" }}

ServiceL3のロードバランサーみたいなもの。

左のjsonを使ってserviceを構築すると、port8000へのアクセスを、nginx podのport80へ転送する

Page 37: DockerとKubernetesが作る未来

Minion Minion

Service

tcp:8000

tcp:80tcp:80

Page 38: DockerとKubernetesが作る未来

redis-masterredisslave redisslave

frontend frontend frontend

Frontend Replication Controller

Redis Slave Replication Controller

Redis Slave service Redis master service

Frontend service

Page 39: DockerとKubernetesが作る未来

Kubernetesを使うことで✓ 複数ホストにコンテナを簡単に展開できる

✓ Replication Controllerが、常にコンテナの 状態をみてくれる

✓ Servicesで、複数コンテナへアクセスを分配出来る

✓ これらを、物理ホストを意識すること無く 展開出来る

Page 40: DockerとKubernetesが作る未来

Kubernetesとどう関わっていくべきか

Page 41: DockerとKubernetesが作る未来

これでDockerをProductionに

Productionで使えるんですか! もうマルチホストいけるんですか!

Page 42: DockerとKubernetesが作る未来

まだベータです

ベータじゃないすか!

Page 43: DockerとKubernetesが作る未来

それでも使ってみたい!という人は

Page 44: DockerとKubernetesが作る未来

自前でKubernetesを組む• Githubで公開されているので、それを使って自前の環境に構築する

https://github.com/GoogleCloudPlatform/kubernetes

Page 45: DockerとKubernetesが作る未来

Software Design2014年12月号で

k8sの使い方を書きました

Page 46: DockerとKubernetesが作る未来

Kubernetesを構築してくれるサービスを使う• Google Container Engine (GKE)

• 他にもいっぱい出てくるはず • vSphereとか

• Azureとか

Page 47: DockerとKubernetesが作る未来

Kubernetesを内部に持つ サービスを使う

• OpenShift v3

• Red Hatが開発しているPaaS

• 次期バージョン v3 からDocker対応

内部のコンテナ管理にKubernetesを利用

Page 48: DockerとKubernetesが作る未来

KubernetesはPaaSじゃない?

PaaSにはいろいろな定義がありますが・・・

Webサービスの開発ライフサイクルを支援

をPaaSと定義すると

Page 49: DockerとKubernetesが作る未来

•ユーザー管理 / 認証・認可

•コードのバージョン管理

•コードからのデプロイ

•ロギング

•アプリケーションのメトリクス取得

•コンテナの管理

•コンテナの実行

Page 50: DockerとKubernetesが作る未来

Dockerと

Kubernetesが作る未来

Page 51: DockerとKubernetesが作る未来

未来が分かるなら苦労しない

Page 52: DockerとKubernetesが作る未来

• 10年前は、こんなにスマホが普及するなんて想像していなかった

• 6年前、こんなにクラウドが当たり前になるなんて想像していなかった

• 2年前、こんなにコンテナ技術が流行るなんて想像していなかった

Page 53: DockerとKubernetesが作る未来

PaaSを切り口に考えてみると

Page 54: DockerとKubernetesが作る未来

第1世代のPaaS

• 2007年~2010ごろまで

• プロプライエタリ

• 決め打ちの言語・フレームワーク・DB

Page 55: DockerとKubernetesが作る未来

第2世代のPaaS

• 2011年~

• プロプライエタリ / オープン

• 様々な言語・フレームワーク・DB

• 仮想化技術をフル活用

Page 56: DockerとKubernetesが作る未来

第3世代のPaaS

• 2014年~

• コンテナネイティブ

• どの環境でも、同じものが使える

• より早く、より柔軟に、よりオープンに

Page 57: DockerとKubernetesが作る未来

• 第3世代のPaaSを実現していくために最も重要なパーツがDocker

• GAE、Azure、ElasticBeanstalk、OpenShift、Cloud Foundryなど、多くのPaaSがDocker対応を表明。

• IaaSもDocker対応を謳うところが増えている

• Kubernetesは、それらを支える土台になるかもしれない

Page 58: DockerとKubernetesが作る未来

でも、未来はどうなるか分からない

12月4日 Dockerがマルチホストのコンテナ環境構築/管理を行うツールを発表

12月1日 CoreOSが独自のコンテナ実行基盤Rocketを発表

Page 59: DockerとKubernetesが作る未来

参考情報

Kuberneteshttps://github.com/GoogleCloudPlatform/kubernetes/

Kubernetes Advent Calendar

Rockethttps://github.com/coreos/rocket

Docker swarmhttps://github.com/docker/swarm

http://paas.connpass.com/event/10059/第23回 PaaS勉強会

http://qiita.com/advent-calendar/2014/kubernetes