オープンソース

Kubernetesのコンテナアップデート

Kubernetesでは、Dockerコンテナのソフトウェアのアップデートを非常に柔軟に行うことができます。特にKubernetesの機能を利用することで、アップデートを無停止で行うことができます。ここでは、Kubernetesでソフトウェアをアップデートする場合の手法について解説します。

Kubernetesによるアップデートの考え方

Kubernetesでは、PodとPodを管理する機能を活用することで、ソフトウェアやコンテンツのアップデートを安全に行うことができます。ここでは、まず基本的な考え方について解説します。

(1) アップデート前のKubernetes環境

次の図のように、Kubernetes上で動作しているPod内のソフトウェアのバージョンアップを行う場合を例にとって解説します。

アップデート前のKubernetes環境画面

  • Kubernetes内には、2つのホストがあり、それぞれの上でWWWサーバのDockerコンテナが動作しています。
  • 各ソフトウェアのバージョンは、Ver 1です。
  • 利用者は、IP1の80番ポートにアクセスしてサービスを利用しています。

(2) Kubernetes上への検証環境の準備

Kubernetes上に、WWWサーバのソフトウェアのバージョンアップを行ったDockerコンテナを新たに用意し、検証環境として起動します。

Kubernetes上への検証環境の準備画面

  • 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」

Kubernetes〜コンテナ管理の課題を解決するOSS〜
ここでは、Dockerコンテナの管理を自動化するためのソフトウェア「Kubernetes」を紹介します。
Kubernetesクラスタの構築
ここでは、CentOS7に最小限のKubernetesクラスタを構築する方法について説明いたします。
KubernetesのPod機能
ここではPod機能について説明いたします。
Kubernetesのレプリカセットとデプロイメント
ここではデプロイメントという機能を利用してレプリカセットを作成する方法について説明いたします。
Kubernetesのアーキテクチャ
ここではアーキテクチャについて説明いたします。
Kubernetesのコンテナアップデート
ここでは、Kubernetesでソフトウェアをアップデートする場合の手法について説明いたします。
Kubernetesのローリングアップデート
ここでは、Kubernetesのローリングアップデート機能の概要について説明いたします。
Kubernetesのダッシュボード
ここでは管理用のダッシュボードについて説明いたします。
Kubernetesの永続ストレージ
ここでは永続ストレージについて説明いたします。
Rancher〜Kubernetesの管理ソフトウェア〜
ここでは、Kubernetesの管理ソフトウェアのRancherについて紹介します。
GitLab〜Dockerのプロジェクト管理とレジストリ〜
GitLabは、ウェブ型のGitリポジトリマネージャーです。ここではGitLabのコンテナレジストリについて説明いたします。
DRBD-SDSとKubernetes
ここではDRBD-SDSを利用することでサービスの冗長化を実現させる手法について説明いたします。
Falco〜コンテナの侵入・改ざん検知ツール〜
ここではKubernetesを代表するコンテナ環境をターゲットにしているコンテナランタイムセキュリティソフトウェアのFalcoについて説明いたします。
Trivy〜コンテナイメージの脆弱性診断ツール〜
Trivyは、コンテナイメージの脆弱性診断ツールです。ここではTrivyの機能や特徴などについて説明いたします。
コンテナ型仮想化に関連したOSS
ここでは、コンテナ型仮想化に関連したOSSを紹介いたします。

Kubernetesのコンテナアップデートの先頭へ