Kubernetesでスケールアップ・ローリングアップデートを行う

はじめに

Kubernetesはバズワードになりつつあるが、スケールアップ・ローリングアップデートを含む運用のノウハウはまだまだそれほど多くないのでまとめる。

Node.js サーバーを作成する

起動

Docker コンテナ イメージを作成する

docker hubからnodeのversion 6.9.2をダウンロード。
8080ポートを外部に公開、
先ほど作ったserver.jsをdocker内にコピー、
nodeコマンドでserver.jsを起動する。と言った内容。

Dockerイメージをビルドする

動作確認

curlで自身に接続し接続確認をする

非公開リポジトリ Google Container Registry にpushする

Kubernetesのクラスタを作成する

クラスタはGCPで用意する。

2 つの n1-standard-1 ノードのあるクラスタ

ポッドを作成する

こちらは先ほど作ったクラスタの中につくられる。

Kubernetesのコマンドkubectlを使って作っていく。

デプロイメントオブジェクトが作成される。

確認のコマンドはこちら

デプロイメントによって作成されたポッドは以下のコマンドで確認

Kubernetesの状態を確認するコマンド

外部トラフィックを許可する

デフォルトではポッドにはクラスタ内部IPからしかアクセスできないようになっている。kubectl exposeコマンドと –type=”LoadBalancer”で公開する事ができる。

(ポッドを直接公開する手順ではなく、デプロイメントを公開の手順)

公開IPを確認

サービスのスケールアップ

今までは2つのレプリカを用意していたが、それをさらに増やしたい場合以下のコマンドでスケールアップする事が可能

確認

podの状態を確認

新しいコンテナをデプロイする

再度nodeで作ったserver.jsを適当に編集し、保存する。

その後buildしてpush

その後、kubectlコマンドでデプロイするコンテナイメージのタグを変更する

変更するフィールドは

spec.template.spec.containers.image

をv1からv2へ変更する

を行うと順次ポッドがローリングアップデートされる。

古いポッドは削除されてしまうので注意。

管理画面を見る

トークンを取得する

8081ポートを使うことにする(どこでもよい)

コンソール画面でchange portをクリックし、8081ポートに変更する。

?authuser=0を削除し、以下のとおり/uiに変更する

例: 

https://8081-dot-6387619-dot-devshell.appspot.com/ui

参考情報

https://google.qwiklabs.com/focuses/564?locale=ja&parent=catalog