Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

DockerとKubernetesが作る未来

28 388 vues

Publié le

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

Publié dans : Technologie
  • Soyez le premier à commenter

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/

×