Contenu connexe
Similaire à Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた (20)
Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
- 2. Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
自己紹介
堀 祐磨 (ほりでー)
1988年生まれ。多摩美術大学を中
退後、デザイナーとしてグラフィッ
クデザイン・Webデザイン・UIデザ
インを経験。
2015年、株式会社LIGにフロントエ
ンドエンジニアとして入社。
2
- 5. Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
Google Container
Engine (GKE)
5
- 6. Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
Google Container Engine
(GKE)
Kubernetes
Google Computer Engine
6
この2つを用いた、コンテナ型仮想化の為の
インフラサービス。多分IaaSに分類される
- 8. Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
Kurbernetes
Cloud Native Computing Foundationが主に開発
Docker/CoreOS/Google/RedHat/IBM/
Mesosphere/Cisco/Intelらも出資
クラスタリング環境化でのコンテナ構成管理ツール
docker-swarm + docker-compose みたいな
コンテナの負荷分散
ノード(VMインスタンス)へのコンテナの割り当て・
スケジューリング
8
- 9. Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
Kurbernetes
コマンドラインツールからシームレスに
使用できる
docker-composeの様にYAMLやJSON
で宣言的にインフラ構成を設定できる
AWSのEC2 ContainerServiceと違い、
DockerHub上のイメージも直接使用し
てOK
9
- 11. Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
初回デプロイまでの手順
Dockerイメージの準備
クラスター/永続ディスクの準備
Kubernetesの操作
ほとんどCLI上での作業
11
- 12. Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
初回デプロイまでの手順
Dockerイメージの準備
Dockerfile作成
ローカルでテスト
(docker-composeなどで構成管理)
12
※DockerHubをそのまま使うならこの工程は不要
- 15. Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
初回デプロイまでの手順
GCPへのイメージのpush
docker build -t hoge/redmine:v1 .
docker tag hoge/redmine:v1
asia.gcr.io/project_name/redmine:v1
gcloud docker push
asia.gcr.io/project_name/redmine:v1
15
プロジェク名にハイフンが含まれる場合は、
アンスコに置き換えないとダメ
- 17. Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
初回デプロイまでの手順
クラスター/
永続ディスクの準備
クラスターを作成
必要な永続ディスク(Persistent Disk)を作成
コンテナやVMが落とされてもデータを
維持できる領域
AWSのElastic Block Storage
みたいなやつ
17
- 22. gcloud container --project "project-name" clusters create
"cluster-1" --zone "asia-east1-a" --machine-type "g1-
small" --scope "https://www.googleapis.com/auth/
compute","https://www.googleapis.com/auth/
devstorage.read_only","https://www.googleapis.com/auth/
logging.write","https://www.googleapis.com/auth/
servicecontrol","https://www.googleapis.com/auth/
service.management" --num-nodes "2" --network "default"
--enable-cloud-logging --no-enable-cloud-monitoring
gcloudコマンドからも作成可能!
gcloud compute --project "project-name" disks create
"disk-1" --size "20" --zone "asia-east1-a" --type "pd-
standard"
クラスターの作成
永続ディスクの作成
- 23. Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
初回デプロイまでの手順
Kubernetesの操作
構成ファイルを書く
構成ファイルからコンテナを立ち上げる
23
- 32. Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
意外とカンタン…? そうでもなかったよ……
Kubernetesのムズさ
Dockerに加えて独自の概念の
理解が必要
docker-composeとは全然
違うところが多い
ドキュメント英語しかない
概念が複雑でムズい
32
- 33. Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
Kubernetesのムズさ
独自の概念
他にもいろいろあるけど、とりあえず…
Pods
Services
Nodes (旧・Minions)
Nodes > Services > Pods > Containers
33
- 45. Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
Kubernetesのムズさ
docker-composeとは
違うところ
Podの中はlocalhost扱い
Pods間の名前解決の仕組みが違う
Dockerのlink同様の環境変数は提供される
hostsによるコンテナ名での解決は無い!
クラスタ内にDNSがあり、ServiceのIPアドレ
スは以下のテンプレートに沿って名前解決される
name.namespace.svc.cluster.local
仕様上、PodをまたいでVolumeを共有できない
45
- 48. Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
感想
コンテナのデプロイ
どっちがいいか?
GCEやEC2で適当なインスタンスを
立ち上げて、その中でDockerを使う
GKEの様な専用のツールを使う
48
- 49. Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
感想
コンテナのデプロイ
どっちがいいか?
GCEやEC2で適当なインスタンスを
立ち上げて、その中でDockerを使う
ローカルでDocker使うのとほぼ一緒
新たな学習が不要
仮想マシン単位でしかサービスを
スケールできない
49
- 50. Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
感想
コンテナのデプロイ
どっちがいいか?
GKEの様な専用のツールを使う
サービス単位でスケールできる
新たな学習が必要
サービス単位でのスケールが必要ないなら、
メリット少ない…?
大規模サービス向け
50