LoginSignup
15

More than 5 years have passed since last update.

[GCP] Docker imageをpullしてオートスケールする!(^(^▽(^▽(^▽^)▽^)▽^)^)

Last updated at Posted at 2016-03-18

Google Compute Engine(GCE)で、Dockerコンテナでオートスケールさせたい!
Docker imageはインスタンス立ち上がる度にレジストリからpullしたい!
GKE(k8s)使えばいいのだろうけど、もうちょっと手軽にやりたい!

Container-Optimized Google Compute Engine Images
使ってやってみます(^^)

準備

マニフェストファイルを作成

containers.yaml
apiVersion: v1
kind: Pod
metadata:
  name: your-containers
spec:
  containers:
    - name: your-container
      image: us.gcr.io/your-gcp−project/your-image-name
      imagePullPolicy: Always

上記マニフェストファイルはKubernetesのPod定義仕様に沿っています。
http://kubernetes.io/docs/api-reference/v1/definitions/#_v1_pod

外向けにport開く場合は別途指定する必要あります。
ドキュメントに書かれてる例↓

containers.yaml
apiVersion: v1
kind: Pod
metadata:
  name: simple-echo
spec:
  containers:
    - name: simple-echo
      image: gcr.io/google-containers/busybox
      command: ['nc', '-p', '8080', '-l', '-l', '-e', 'echo', 'hello world!']
      imagePullPolicy: Always
      ports:
        - containerPort: 8080
          hostPort: 8080

インスタンステンプレート作成

[Container-Optimized Google Compute Engine Images]

Container-Optimized Imageは2016/3/10時点でOpen previewでWEBコンソールから選択できないので、gcloudコマンドを使用します。

$ gcloud compute --project "your-project-id" instance-templates \
create "your-instance-template" --machine-type "n1-standard-2" \
--network "default" --metadata-from-file google-container-manifest=containers.yaml \
--no-restart-on-failure --maintenance-policy "TERMINATE" --preemptible \
--image container-vm --boot-disk-size "20" --boot-disk-type "pd-standard" \
--boot-disk-device-name "any-disk-name"

ミソは--imageに"container-vm"を指定すること。
あと、上記例ではpreemptibleインスタンスを使用してます。

インスタンステンプレートまで作ってしまえば、あとはコンソールから通常の手順でインスタンスグループを作成出来ます。

参考までにgcloudコマンドを記しておきます。

インスタンスグループ作成

$ gcloud compute --project "your-project-id" instance-groups managed \
create "your-instance-group" --zone "asia-east1-b" --base-instance-name \
"your-instance-group" --template "your-instance-template" --size "1"

オートスケール設定

最小インスタンス数1, 最大インスタンス数20で設定

$ gcloud compute --project "your-project-id" instance-groups managed \
set-autoscaling "your-instance-group" --zone "asia-east1-b" \
--cool-down-period "60" --max-num-replicas "20" --min-num-replicas "1" \
--target-cpu-utilization "0.6"

あと・・

外向けにport公開するサ−バー群の場合はロードバランサ準備する必要ありますが、本記事では割愛しますm(_ _)m

蛇足

https://cloudplatform.googleblog.com/2016/03/Google-Compute-Engine-boosts-high-availability-controls.html
近いうちにregion指定でインスタンスグループ作れる様になりますね(まだAlpha)。タノシミ(^^)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15