Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

DockerからKubernetesへのシフト

1,507 views

Published on

Cloud Native Kansai #2 でのLT登壇資料です

Published in: Technology
  • Be the first to comment

DockerからKubernetesへのシフト

  1. 1. Dockerから Kubernetesへのシフト Masaki Nakayama #2
  2. 2. KAGOYA JAPAN Twitter: @nakayamam2 Community: RancherJP, CNCF Kansai Masaki Nakayama
  3. 3. コンテナ使ってますか?
  4. 4. コンテナ使ってますか? ● Docker/docker-compose ● Kubernetes ● 実はSwarm
  5. 5. サービス規模や用途と コンテナ・ホストサーバー構成
  6. 6. 1 Service on 1 Host ● DockerfileによるIaC ● 冪等性・ポータビリティ web db 80, 443 port
  7. 7. Multi Services on 1 Host ● DockerfileによるIaC ● 冪等性・ポータビリティ + ホストの収容効率UP web db web db service-a.com service-b.com nginx-proxy
  8. 8. Multi Services on Multi Host ● DockerfileによるIaC ● 冪等性・ポータビリティ ● ホスト収容効率UP + リソースがスケーラブル + サービスの自動復旧 + あらゆるリソース要件のIaC + 充実したエコシステム …and more
  9. 9. Multi Services on Multi k8s Cluster
  10. 10. ● 今の所はDocker/docker-composeで 大方やりたいことは適っている ● サービスが育ってきた時に柔軟にスケー ルしていきたい ● 現状、開発者はdocker使いが多い 状況に応じた構成
  11. 11. DockerからKubernetes へシフトするための手段が あってもいいんじゃない の?
  12. 12. Docker ⬇ Kubernetes? ? ● Kubernetesのアーキテクチャやコン ポーネントの理解 ● docker-compose.yamlをKubernetesの 各Kubernetesリソースへの落とし込み
  13. 13. Compose on Kubernetes
  14. 14. Compose on Kubernetes ● https://github.com/docker/compose- on-kubernetes ● Docker社製のOSSの一つ ● 2018年12月のDockerCon EUで発表 ● Docker Swarmのdocker stack deploy でdocker-compose.ymlをもとにk8sへ デプロイ(k8sリソースの自動作成)を 行ってくれるツール ● 類似のOSSとしてkomposeというのもあ るが、Docker社製のため、こちらの方が よりDockerネイティブな使い心地(という かdocker swarmまんま)
  15. 15. 結構活発に動いています
  16. 16. どこで使えるのか 最初からインストール済(Engine 18.09以降) ● Docker for Mac/Windows ● Docker EE 要インストール作業 ● Azure AKS ● GKE ● Microk8s ● Minikube    EKS...
  17. 17. ほら、 あなたの端末でも
  18. 18. https://github.com/docker/compose-on-kubernetes/blob/master/docs/architecture.md
  19. 19. ● stack情報管理用のetcdをデプロイ(要 helm) ● cluster-admin ロールの取得 ● Compose on Kubernetesをデプロイ 各k8sクラスターへの構築方法は下記参照 https://github.com/docker/compose-on-kub ernetes#deploying-compose-on-kubernetes 任意の k8sクラスターで 使うためには
  20. 20. 実際にWebアプリケーションを デプロイしてみる
  21. 21. ● GKEにcompose on kubernetesとetcdはデプロイ済 ● サンプルアプリとして、knowledgeというOSSをデプロイする 前提
  22. 22. knowledge ● https://information-knowledge.support-project. org/ja/ ● チーム内でナレッジ共有できる(Qiita:Team的なも の) ● 弊社チーム内では新規投稿をRocket.Chatに webhook通知で飛ばして社内Qiita的に使っていま す(どちらもdocker-composeで動かしています)
  23. 23. docker-compose.yml version: '3.6' services: kw-app: image: koda/docker-knowledge:latest volumes: - type: volume source: app-data target: /root/.knowledge ports: - 8080:8080 kw-db: image: postgres:9.6.5 environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: password POSTGRES_DB: knowledge_production PGDATA: /var/lib/postgresql/data/db volumes: - type: volume source: db-data target: /var/lib/postgresql/data volumes: app-data: db-data:
  24. 24. deploy
  25. 25. Pod, Service
  26. 26. Statefulset, PV, PVC
  27. 27. 注意点 ● スライド作成時点ではDocker CLIはカスタムビルドしないとgcp対応できてなかった ● kubectlコマンドでリソース削除を試みても、stack情報が専用のetcdに残されているため、それに合わせ た数で自動復旧してくる。つまり、お掃除の時はあくまでもdocker stack rm ● Docker-composeファイルの文法はdocker swarmに依存しており、depends_onやrestartなどは無視さ れる
  28. 28. まとめ ● 状況に応じてdockerとKubernetsを使い分ける・シフトする選択肢があっても良い ● 一つの手段としてCompose on Kubernetes便利ですよ! ● ただし、Kubernetesを知らなくていいということではない ● 逆にdockerでこう書いていたものがそうなるのか、といったKubernetes勉強の題材にもいかがでしょう
  29. 29. Thanks! #2

×