概要
前回、Google Container Engine (gke) のクイックスタートを試しました
今回は Dockerhub で公開している独自のイメージを gke 上で動作させてみます
Cloud Shell が使えないので CentOS に gcloud, kubectl コマンドをインストールするところから紹介します
プロジェクト名は前回同様「test-gke」で進めます
環境
- CentOS 7.3
- Docker 1.12.6
- gcloud 137.0.1
- kubectl 1.4.6
- Arukas 2017/02/08 時点
gcloud コマンドのインストール
- wget ‘https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-137.0.1-linux-x86_64.tar.gz’
- tar zvxf google-cloud-sdk-137.0.1-linux-x86_64.tar.gz
- ./google-cloud-sdk/install.sh
- exit
一旦抜けて再ログインすることで gcloud コマンドが使えるようになります
gcloud コマンドのインストール方法はゲスト OS ごとに異なるので CentOS でない場合は以下を参考に自信の環境に合わせてインストールしてください
https://cloud.google.com/sdk/docs/quickstarts
gcloud コマンド初期化
アカウントの認証とリージョン等のデフォルト設定を行います
- gcloud init
- gcloud auth application-default login
- gcloud config list
- gcloud auth list
init と login のときにいろいろと設定を行います
基本的には yes/no で答えていけば OK です
また、認証コードを取得する工程がありターミナルに表示される長ったらしい URL にアクセスすると認証コードが表示されるので、それをターミナルにコピペしてください
問題なく完了したら config list と auth list で設定を確認しましょう
それぞれ以下のような感じで表示されれば OK です
Your active configuration is: [default]
[compute]
region = us-central1
zone = us-central1-b
[core]
account = yourname@gmail.com
disable_usage_reporting = False
project = test-gke-158003
Credentialed Accounts:
- yourname@gmail.com ACTIVE
To set the active account, run:
$ gcloud config set account `ACCOUNT`
kubectl コマンドのインストール
- gcloud components update kubectl
コンテナクラスタの作成
必要なコマンドのインストールと設定が完了したので実際にリソースを作成していきます
- gcloud container clusters create cluster-1
コンテナクラスタ名だけ指定して作成しています
各自のデフォルトの設定に左右されますが、特に変更していなければノードイメージが gci でサイズが 3 でマシンタイプは n1-standard-1 で作成されます
作成が完了したら以下のコマンドで確認してください
- gcloud compute instances list
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
gke-cluster-1-default-pool-07bdda47-272j us-central1-b n1-standard-1 10.128.0.4 146.148.70.63 RUNNING
gke-cluster-1-default-pool-07bdda47-r2b6 us-central1-b n1-standard-1 10.128.0.2 104.198.233.166 RUNNING
gke-cluster-1-default-pool-07bdda47-slph us-central1-b n1-standard-1 10.128.0.3 104.154.26.254 RUNNING
こんな感じで 3 台作成されると思います
gcr にイメージをプッシュする
Dockerhub にあるイメージをデプロイはするのですが、直接 Dockerhub からイメージを取得することができません
一旦 Google Container Registry (gcr) にプッシュすることで使えるようにします
- docker pull kakakikikeke/request-dumper
- docker tag kakakikikeke/request-dumper gcr.io/test-gke-158003/request-dumper
Dockerhub からイメージを取得し、取得したイメージにリポジトリ名とプロジェクト名を付与したタグをイメージに振ります
- gcloud docker push gcr.io/test-gke-158003/request-dumper
で gcr にイメージをプッシュします
完了すると gke のコンソール画面でも gcr にイメージがプッシュされたのが確認できると思います
コンテナを起動する
kubectl run request-dumper --image=gcr.io/test-gke-158003/request-dumper --port=4567
run のあとにコンテナ名を指定しあとは --image
と --port
でイメージとコンテナ側で LISTEN するポートを指定します
これで pods と呼ばれるコンテナの種ができました
この種に expose することでサービスとして起動させます
kubectl expose deployment request-dumper --type="LoadBalancer"
--type="LoadBalancer"
でLB にぶら下げグローバルからアクセスできるようにします
また deployment の部分は他に pod (po), service (svc), replicationcontroller (rc), deployment (deploy), replicaset (rs) が指定できます
あとは以下で状態を監視して EXTERNAL-IP が pending から IP に変わったらその IP にアクセスしてみましょう
アクセスするポートは今回の場合 4567 になります
kubectl get services --watch
最後に
Dockerhub で公開されているイメージを gke で動作させてみました
基本的には gcr に一旦プッシュし直さないと使えないようです
kubectl のときに認証エラーが出るときは再度認証のコマンドを実行し直してみてください
チュートリアルでやっていた yaml を使った定義もそのうち試してみたいと思います
おそらく docker-compose 的なことをやるときに使う感じになると思っています
0 件のコメント:
コメントを投稿