O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
Dockerと 
Kubernetesが作る未来
PaaS勉強会 主宰 
Kazuto Kusama 
@jacopen
Enlightened L11 
Kazuto Kusama 
@jacopen
#DARSANA
PaaS勉強会 
Cloud FoundryやOpenShift、その他様々なPaaSを 
テーマにした勉強会
PaaS勉強会 
第23回 PaaS勉強会@蒲田 12/19 19:00~ 
http://paas.connpass.com/event/10059/
Docker、便利ですよね
お前それProduction環境でも 
同じこと言えんの?
たとえば 
1つのコンテナを上げるだけなら簡単
たとえば 
1つのコンテナ内で複数のサービスを 
上げることは好ましくない
たとえば 
サービスごとにコンテナを 
立ち上げる
たとえば 
コンテナ間のネットワークは 
どうしよう・・・?
たとえば 
ホストが異なった場合は 
どうしよう・・・
たとえば 
たくさんのホストに、たくさんの 
コンテナを作る場合、どうしよう
たとえば 
Dockerホストが障害でダウンしたら 
どうしよう
現在のDockerは、運用を 
考えると足りないモノが多い
解決方法はある 
• シングルホストのネットワークは、Dockerの 
Link機能で・・・ 
• マルチホストはAmbassadorパターンで・・・ 
• コンテナの管理はfigを・・・ 
• コンテナの監視はsensuで・・・ 
• 以下略...
• 試験環境や開発環境なら、それでもいい 
• Production環境でそれをやれるかどうか? 
運用はどうする? 
技術的にやれるかどうかと 
運用出来るかどうかは別
そこでKubernetes
これから話す、3つのポイント 
• Kubernetesとは何か 
• 実際どんな感じに使えるのか 
• Kubernetesと、どう関わっていくか
Kubernetesとは
Kubernetesとは 
• Googleが公開した、コンテナ管理のツール 
• 複数のホストにまたがるコンテナの管理 
• 長いのでk8sって略されることが多い
Kubernetesで実現できること 
✓ 複数ホストにコンテナを展開 
✓ 関連するコンテナごとにグルーピング 
✓ コンテナの死活監視 
✓ コンテナ間のネットワーク 
✓ コンテナの負荷分散
様々なベンダーが支持を表明 
• Docker 
• Microsoft 
• IBM 
• Red Hat 
• CoreOS
いろんな環境で使えます 
• Google Compute Engine 
• Microsoft Azure 
• AWS 
• Azure 
• CoreOS 
• vSphere 
• Vagrant
実際に使ってみよう
2つの役割 
それぞれVM 
もしくは 
ベアメタル 
Master Minion 
管理するやつコンテナ動かすやつ
Master 
実験環境 
Minion 
Minion 
Minion Minion
クライアントツールで叩く 
Master 
MasterのAPIを 
Minion 
Minion 
Minion Minion 
API 
client
$ ./cluster/kubecfg.sh -p 8080:80 run dockerfile/nginx 2 myNginx
Replication Controllerが 
複数ホストのコンテナを監視 
Master 
Minion 
Minion 
Minion Minion 
API 
Replication 
Controller
$ ./cluster/kubecfg.sh resize myNginx 3 
Master 
Minion Minion 
Minion Minion 
API 
Replication 
Controller
コンテナの数が減ったら 
自動で立ち上げる 
Master 
Minion Minion 
Minion Minion 
API 
Replication 
Controller
正確には「Pod」単位で管理 
コンテナ 
コンテナ 
Pod
$ ./cluster/kubecfg.sh -c service.json create services 
{ 
"id": "frontend", 
"kind": "Service", 
"apiVersion": "v1beta1",...
tcp:8000 
Service 
tcp:80 tcp:80 
Minion Minion
Frontend Replication Controller 
frontend frontend frontend 
Redis Slave service Redis master service 
redisslave redissla...
Kubernetesを使うことで 
✓ 複数ホストにコンテナを簡単に展開できる 
✓ Replication Controllerが、常にコンテナの 
状態をみてくれる 
✓ Servicesで、複数コンテナへアクセスを分配出来る 
✓ これら...
Kubernetesと 
どう関わっていくべきか
これでDockerをProductionに 
Productionで使えるんですか! 
もうマルチホストいけるんですか!
まだベータです 
ベータじゃないすか!
それでも使ってみたい! 
という人は
自前でKubernetesを組む 
• Githubで公開されているので、それを使って 
自前の環境に構築する 
https://github.com/GoogleCloudPlatform/kubernetes
Software Design 
2014年12月号で 
k8sの使い方を書きました
Kubernetesを 
構築してくれるサービスを使う 
• Google Container Engine (GKE) 
• 他にもいっぱい出てくるはず 
• vSphereとか 
• Azureとか
Kubernetesを内部に持つ 
サービスを使う 
• OpenShift v3 
• Red Hatが開発しているPaaS 
• 次期バージョン v3 からDocker対応 
内部のコンテナ管理にKubernetesを利用
KubernetesはPaaSじゃない? 
PaaSにはいろいろな定義がありますが・・・ 
Webサービスの開発ライフサイクルを支援 
をPaaSと定義すると
•ユーザー管理 / 認証・認可 
•コードのバージョン管理 
•コードからのデプロイ 
•ロギング 
•アプリケーションのメトリクス取得 
•コンテナの管理 
•コンテナの実行
Dockerと 
Kubernetesが作る未来
未来が分かるなら苦労しない
• 10年前は、こんなにスマホが普及するなんて 
想像していなかった 
• 6年前、こんなにクラウドが当たり前になるな 
んて想像していなかった 
• 2年前、こんなにコンテナ技術が流行るなんて 
想像していなかった
PaaSを切り口に考えてみると
第1世代のPaaS 
• 2007年~2010ごろまで 
• プロプライエタリ 
• 決め打ちの言語・フレームワーク・DB
第2世代のPaaS 
• 2011年~ 
• プロプライエタリ / オープン 
• 様々な言語・フレームワーク・DB 
• 仮想化技術をフル活用
第3世代のPaaS 
• 2014年~ 
• コンテナネイティブ 
• どの環境でも、同じものが使える 
• より早く、より柔軟に、よりオープンに
• 第3世代のPaaSを実現していくために 
最も重要なパーツがDocker 
• GAE、Azure、ElasticBeanstalk、OpenShift、 
Cloud Foundryなど、多くのPaaSがDocker対 
応を表明。 
•...
でも、未来は 
どうなるか分からない 
12月1日 
CoreOSが独自のコンテナ実行基盤 
Rocketを発表 
12月4日 
Dockerがマルチホストのコンテナ環 
境構築/管理を行うツールを発表
参考情報 
Kubernetes 
https://github.com/GoogleCloudPlatform/kubernetes/ 
Kubernetes Advent Calendar 
http://qiita.com/advent-...
DockerとKubernetesが作る未来
Próximos SlideShares
Carregando em…5
×

DockerとKubernetesが作る未来

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

  • Seja o primeiro a comentar

DockerとKubernetesが作る未来

  1. 1. Dockerと Kubernetesが作る未来
  2. 2. PaaS勉強会 主宰 Kazuto Kusama @jacopen
  3. 3. Enlightened L11 Kazuto Kusama @jacopen
  4. 4. #DARSANA
  5. 5. PaaS勉強会 Cloud FoundryやOpenShift、その他様々なPaaSを テーマにした勉強会
  6. 6. PaaS勉強会 第23回 PaaS勉強会@蒲田 12/19 19:00~ http://paas.connpass.com/event/10059/
  7. 7. Docker、便利ですよね
  8. 8. お前それProduction環境でも 同じこと言えんの?
  9. 9. たとえば 1つのコンテナを上げるだけなら簡単
  10. 10. たとえば 1つのコンテナ内で複数のサービスを 上げることは好ましくない
  11. 11. たとえば サービスごとにコンテナを 立ち上げる
  12. 12. たとえば コンテナ間のネットワークは どうしよう・・・?
  13. 13. たとえば ホストが異なった場合は どうしよう・・・
  14. 14. たとえば たくさんのホストに、たくさんの コンテナを作る場合、どうしよう
  15. 15. たとえば Dockerホストが障害でダウンしたら どうしよう
  16. 16. 現在のDockerは、運用を 考えると足りないモノが多い
  17. 17. 解決方法はある • シングルホストのネットワークは、Dockerの Link機能で・・・ • マルチホストはAmbassadorパターンで・・・ • コンテナの管理はfigを・・・ • コンテナの監視はsensuで・・・ • 以下略 出来るけどやっぱり面倒
  18. 18. • 試験環境や開発環境なら、それでもいい • Production環境でそれをやれるかどうか? 運用はどうする? 技術的にやれるかどうかと 運用出来るかどうかは別
  19. 19. そこでKubernetes
  20. 20. これから話す、3つのポイント • Kubernetesとは何か • 実際どんな感じに使えるのか • Kubernetesと、どう関わっていくか
  21. 21. Kubernetesとは
  22. 22. Kubernetesとは • Googleが公開した、コンテナ管理のツール • 複数のホストにまたがるコンテナの管理 • 長いのでk8sって略されることが多い
  23. 23. Kubernetesで実現できること ✓ 複数ホストにコンテナを展開 ✓ 関連するコンテナごとにグルーピング ✓ コンテナの死活監視 ✓ コンテナ間のネットワーク ✓ コンテナの負荷分散
  24. 24. 様々なベンダーが支持を表明 • Docker • Microsoft • IBM • Red Hat • CoreOS
  25. 25. いろんな環境で使えます • Google Compute Engine • Microsoft Azure • AWS • Azure • CoreOS • vSphere • Vagrant
  26. 26. 実際に使ってみよう
  27. 27. 2つの役割 それぞれVM もしくは ベアメタル Master Minion 管理するやつコンテナ動かすやつ
  28. 28. Master 実験環境 Minion Minion Minion Minion
  29. 29. クライアントツールで叩く Master MasterのAPIを Minion Minion Minion Minion API client
  30. 30. $ ./cluster/kubecfg.sh -p 8080:80 run dockerfile/nginx 2 myNginx
  31. 31. Replication Controllerが 複数ホストのコンテナを監視 Master Minion Minion Minion Minion API Replication Controller
  32. 32. $ ./cluster/kubecfg.sh resize myNginx 3 Master Minion Minion Minion Minion API Replication Controller
  33. 33. コンテナの数が減ったら 自動で立ち上げる Master Minion Minion Minion Minion API Replication Controller
  34. 34. 正確には「Pod」単位で管理 コンテナ コンテナ Pod
  35. 35. $ ./cluster/kubecfg.sh -c service.json create services { "id": "frontend", "kind": "Service", "apiVersion": "v1beta1", "port": 8000, "containerPort": 80, "selector": { "name": "nginx" }, "labels": { "name": "frontend" } } Service L3のロードバランサーみたいなもの。 左のjsonを使ってserviceを構築すると、 port8000へのアクセスを、nginx podの port80へ転送する
  36. 36. tcp:8000 Service tcp:80 tcp:80 Minion Minion
  37. 37. Frontend Replication Controller frontend frontend frontend Redis Slave service Redis master service redisslave redisslave redis-master Redis Slave Replication Controller Frontend service
  38. 38. Kubernetesを使うことで ✓ 複数ホストにコンテナを簡単に展開できる ✓ Replication Controllerが、常にコンテナの 状態をみてくれる ✓ Servicesで、複数コンテナへアクセスを分配出来る ✓ これらを、物理ホストを意識すること無く 展開出来る
  39. 39. Kubernetesと どう関わっていくべきか
  40. 40. これでDockerをProductionに Productionで使えるんですか! もうマルチホストいけるんですか!
  41. 41. まだベータです ベータじゃないすか!
  42. 42. それでも使ってみたい! という人は
  43. 43. 自前でKubernetesを組む • Githubで公開されているので、それを使って 自前の環境に構築する https://github.com/GoogleCloudPlatform/kubernetes
  44. 44. Software Design 2014年12月号で k8sの使い方を書きました
  45. 45. Kubernetesを 構築してくれるサービスを使う • Google Container Engine (GKE) • 他にもいっぱい出てくるはず • vSphereとか • Azureとか
  46. 46. Kubernetesを内部に持つ サービスを使う • OpenShift v3 • Red Hatが開発しているPaaS • 次期バージョン v3 からDocker対応 内部のコンテナ管理にKubernetesを利用
  47. 47. KubernetesはPaaSじゃない? PaaSにはいろいろな定義がありますが・・・ Webサービスの開発ライフサイクルを支援 をPaaSと定義すると
  48. 48. •ユーザー管理 / 認証・認可 •コードのバージョン管理 •コードからのデプロイ •ロギング •アプリケーションのメトリクス取得 •コンテナの管理 •コンテナの実行
  49. 49. Dockerと Kubernetesが作る未来
  50. 50. 未来が分かるなら苦労しない
  51. 51. • 10年前は、こんなにスマホが普及するなんて 想像していなかった • 6年前、こんなにクラウドが当たり前になるな んて想像していなかった • 2年前、こんなにコンテナ技術が流行るなんて 想像していなかった
  52. 52. PaaSを切り口に考えてみると
  53. 53. 第1世代のPaaS • 2007年~2010ごろまで • プロプライエタリ • 決め打ちの言語・フレームワーク・DB
  54. 54. 第2世代のPaaS • 2011年~ • プロプライエタリ / オープン • 様々な言語・フレームワーク・DB • 仮想化技術をフル活用
  55. 55. 第3世代のPaaS • 2014年~ • コンテナネイティブ • どの環境でも、同じものが使える • より早く、より柔軟に、よりオープンに
  56. 56. • 第3世代のPaaSを実現していくために 最も重要なパーツがDocker • GAE、Azure、ElasticBeanstalk、OpenShift、 Cloud Foundryなど、多くのPaaSがDocker対 応を表明。 • IaaSもDocker対応を謳うところが増えている • Kubernetesは、それらを支える土台に なるかもしれない
  57. 57. でも、未来は どうなるか分からない 12月1日 CoreOSが独自のコンテナ実行基盤 Rocketを発表 12月4日 Dockerがマルチホストのコンテナ環 境構築/管理を行うツールを発表
  58. 58. 参考情報 Kubernetes https://github.com/GoogleCloudPlatform/kubernetes/ Kubernetes Advent Calendar http://qiita.com/advent-calendar/2014/kubernetes Rocket https://github.com/coreos/rocket Docker swarm https://github.com/docker/swarm 第23回 PaaS勉強会 http://paas.connpass.com/event/10059/

×