カテゴリー
サイト構築

Google Container Engineでローリングアップデート

Google Contaier Engine(GKE)でコンテナをローリングアップデートしてみます。

コンテナのビルド

 以前、このあたりに書いたとおりです。

Google Container Engineに移行した その2 | A-tak-dot-com

[bash]
#作業ディレクトリ
dockerwork=/Users/a-tak/Dropbox/docker
#プロジェクトID
projectid=myproject-99

#nginxイメージビルドしてアップしておく
docker build -t asia.gcr.io/${projectid}/nginx:v23 ${dockerwork}/nginx
gcloud docker push asia.gcr.io/${projectid}/nginx:v23

#php-fpmのイメージ作ってアップする
docker build -t asia.gcr.io/${projectid}/php-fpm:v5 ${dockerwork}/php-fpm
gcloud docker push asia.gcr.io/${projectid}/php-fpm:v5
[/bash]

 v23とかv5はイメージ作る度にカウントアップしてください。Dockerfileの場所とプロジェクトのIDも自分の環境に合わせる。

 ちなみに今回コンテナをyum updateしたいだけだったけど、その場合はビルドするときにキャッシュ使わないオプション指定しないと、Dockerfileに変更がないとキャッシュが使われて結局イメージ更新されないはずです。

ローリングアップデート

 ぶっちゃけ、ここに書いてあるのを真似した。ただ、yamlをソース管理したかったのでバージョンは自分で毎回書き換える運用にしている。

GKE におけるローリングアップデート – Qiita

 レプリケーションコントローラーにイメージのバージョン指定してあるのでこれも合わせて更新。

 レプリケーションコントローラーに関しては以前記事に書きました。

Google Container Engineに移行した その4 | A-tak-dot-com

Google Container Engineに移行した その5 オートスケール | A-tak-dot-com

[yaml]

kind: “ReplicationController”
apiVersion: “v1”
metadata:
name: “web-rc-09”
labels:
name: “web-rc-09”
spec:
replicas: 1
selector:
name: “web-pods”
version: “9”
template:
metadata:
labels:
name: “web-pods”
version: “9”
spec:
volumes:
– name: www
nfs:
server: “db.my-project-99.internal”
path: “/var/contents”
readOnly: false
containers:

name: “nginx”
image: “asia.gcr.io/a-tak-blog/nginx:v23”
ports:

containerPort: 80
volumeMounts:
– name: www
mountPath: “/var/contents”

name: “php-fpm”
image: “asia.gcr.io/a-tak-blog/php-fpm:v5”
ports:

containerPort: 9000
volumeMounts:
– name: www
mountPath: “/var/contents”
[/yaml]

 今動いているレプリケーションコントローラーが、web-rc-08とするとこんな感じ↓

[bash]
kubectl rolling-update web-rc-08 -f ${dockerwork}/kubernetes/web.yml
[/bash]

 これで無停止でアップデートできる。自動で新しいPodが起動して古いPodは消去されていく。いいね。

 serviceのselectorにweb-podsを指定していて、そこは不変なままなのがポイント。

 オートスケールも再設定がたぶん必要

[bash]
kubectl delete hpa web-rc-08
kubectl autoscale rc web-rc-09 –min=1 –max=10 –cpu-percent=80
[/bash]

この記事を書いた人: A-tak

A-tak.com(えいたっく どっとこむ)の管理人。
Apple野郎なおっさんでしたが、ちょっと最近のAppleには飽き気味。
A-tak.comは2002年2月から運営(前身のサイトは1999年3月から)。今年で18年目!

Twitter
Mastodon
Facebook

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください