-
サーバ構築のデージーネットTOP
-
OSS情報
-
一押しOSS
-
Kubernetes〜コンテナ管理の課題を解決するOSS〜
-
Kubernetesのコンテナアップデート
-
サーバ構築のデージーネットTOP
-
OSS情報
-
コンテナ型仮想化
-
Kubernetes〜コンテナ管理の課題を解決するOSS〜
-
Kubernetesのコンテナアップデート
Kubernetesのコンテナアップデート
Kubernetesでは、Dockerコンテナのソフトウェアのアップデートを非常に柔軟に行うことができます。特にKubernetesの機能を利用することで、アップデートを無停止で行うことができます。ここでは、Kubernetesでソフトウェアをアップデートする場合の手法について解説します。
Kubernetesによるアップデートの考え方
Kubernetesでは、PodとPodを管理する機能を活用することで、ソフトウェアやコンテンツのアップデートを安全に行うことができます。ここでは、まず基本的な考え方について解説します。
(1) アップデート前のKubernetes環境
次の図のように、Kubernetes上で動作しているPod内のソフトウェアのバージョンアップを行う場合を例にとって解説します。
- Kubernetes内には、2つのホストがあり、それぞれの上でWWWサーバのDockerコンテナが動作しています。
- 各ソフトウェアのバージョンは、Ver 1です。
- 利用者は、IP1の80番ポートにアクセスしてサービスを利用しています。
(2) Kubernetes上への検証環境の準備
Kubernetes上に、WWWサーバのソフトウェアのバージョンアップを行ったDockerコンテナを新たに用意し、検証環境として起動します。
- Ver 1のDockerコンテナはそのままに、ソフトウェアをバージョンアップしたVer 2のDockerコンテナを起動します。
- Ver 1のDockerコンテナへはIP1の80番ポートへアクセスして利用できます。
- Ver 2のDockerコンテナへはIP1の8080番ポートへアクセスして利用できます。
- 利用者は、引き続きIP1の80番ポートにアクセスしてサービスを利用することができます。
- 管理者は、IP1の8080番ポートにアクセスして、新しいソフトウェアの動作を検証することができます。
(3) Kubernetes上で提供するサービスの切り替え
検証の結果が問題なければ、Kubernetesのネットワークの設定を変更し、IP1の80番ポートをVer 2のDockerコンテナへ切り替えます。切り替えは瞬時に行われます。
- Ver 2のDockerコンテナへはIP1の80番ポートへアクセスして利用できます。
- Ver 1のDockerコンテナへのアクセスは停止します。
- Ver 1のDockerコンテナは、しばらくは残しておき、問題がないと分った時点で停止します。
(4) Kubernetes上のサービスの切り戻し
もし万一、Ver 2のDockerコンテナで不具合が発生した場合には、IP1の80番ポートをVer 1のDockerコンテナへ切り替えるだけで、切り戻しが瞬時に完了します。
- Ver 1のDockerコンテナへはIP1の80番ポートへアクセスして利用できます。
- Ver 2のDockerコンテナへのアクセスは停止します。
Kubernetesのアップデートの問題点
実際の運用では、単独のDockerコンテナだけで運用しているわけではないので、より複雑な手順が必要になります。
複数のDockerコンテナがデプロイメントで動作している場合、Kubernetesはデプロイメント内のPod数を維持しようとします。通常は、Pod数は設定した上限数を超えることができません。そのため、入れ替え用の新しいPodを起動する場合は、次のような方法を使う必要があります。
- (1) 別のデプロイメントを用意して、デプロイメント全体を入れ替える
- (2) デプロイメント内のPodの最大値を一時的に増やし、新しいPodを起動しながら順次入れ替えていく
(1)の方法は、多数のPodを同時に起動しなければならず、システムのリソースに余裕がないと利用することができません。
(2)の方法は、より少ないリソースで切り替えることができますが、実際に実行するのは非常に手間が掛かります。
この(2)の方法を支援するのが、Kubernetsのローリングアップデートの機能です。
デモのお申込み
もっと使い方が知りたい方へ
Kubernetesの操作方法や操作性をデモにてご確認いただけます。使い方のイメージを把握したい、使えるか判断したい場合にご活用下さい。Kubernetesのデモをご希望の方は、下記よりお申込みいただけます。
OSS情報「Kubernetes」