本連載の第2回で、仮想化技術と比較しながら、コンテナ技術「Docker」の利点を明らかにし、この技術を使う意義と効果について明らかにした。今回は、Dockerコンテナの運用に標準的に使われているオーケストレーションツール「Kubernetes」にフォーカスを当てながら、コンテナの技術がITの世界にどれほどのインパクトを与えるかについて改めて考察する。
コンテナ運用のスタンダード
「Kubernetes」は、Googleが自社用に開発したコンテナクラスタ管理用ソフトウェア「Borg」をベースにしたオープンソースソフトウェア(OSS)だ。そして、Kubernetes V1.0のリリースに合わせて、Google、IBMなどが、クラウドネイティブの促進を掲げる「Cloud Native Computing Foundation(CNCF)」を設立した。
CNCFは、Kubernetesのホストとして、同OSSの開発プロジェクトとソースコードを管理・提供しているが、CNCFにはGoogleやIBMの他、RedHat、Amazon、シスコシステムズ、マイクロソフト、オラクル、インテルなど、クラウド業界を代表する企業がこぞって加盟しており、業界を挙げてKubernetesの開発・普及に力を注いでいる。
さらに現在、コンテナによってアプリケーションのCI(継続的インテグレーション)/CD(継続的デリバリ)を実現し、開発/運用のあり方を抜本的に変革しようとしている企業は、当たり前ようにKubernetesを導入しているとされている。言い換えれば、Kubernetesは、クラウドネイティブなアプリケーションを運用するための標準プラットフォームと言えるのである。
運用のあり方にもたらす破壊的インパクト
Kubernetesは、「コンテナオケーストレーションツール」に類するソフトウェアであり、コンテナアプリ運用を効率化する以下の7つの機能を提供している。
① コンテナの組み合わせ利用
② スケールアウト
③ 永続ストレージ利用
④ ロールアウト&ロールバック
⑤ 自己修復(可用性)
⑥ クラスタの分割利用
⑦ 監視&ログ分析
このうち、「①」については、文字どおり、データベースサーバやアプリケーションサーバなど、さまざまなコンテナと組み合わせて利用できることを意味し、「②スケールアウト」は、例えば、コンテナアプリのサーバを3台から5台に増やすといった機能を、「③永続ストレージ利用」とはディスクの利用が可能であることを表している。
そして注目すべきは、Kubernetesの「④ロールアウト&ロールバック」機能だ。
この機能を使うことで、例えば、コンテナアプリの更新(改訂版のロールアウト)を、そのアプリがユーザーの利用中であったとしても、システムをまったく止めずに簡単に行うことができ、ロールアウトした改定版に不具合があったときには、同じくシステムを止めずにコンテナアプリを元に戻す(ロールバックする)ことができる。
さらに“破壊的”な変化を運用に与えると思われるのが、「自己修復」の機能だ。
この機能によってコンテナアプリの高い可用性が担保される。結果として、仮想化環境(仮想マシン:VM)のように、クラスタソフトウェアを用いてホット/スタンバイ型のHA(ハイアベイラビリティ)構成を組み、アプリケーションの可用性を担保する必要がなくなるのである。
Kubernetesでは、コンテナのクラスタを論理的に分割して、本番環境とテスト環境を作り、本番環境に悪影響を与えないように、テスト環境のCPU、メモリの最大値を設定することもできる。1つのクラスタの中で、テスト環境と本番環境のネットワークのアクセスを分離させることも可能であり、これにより、テスト環境から誤って本番環境にアクセスしてしまうといったトラブルが回避できる。さらにコンテナアプリの管理やログの分析として機能も備えている。
このほか、Kubernetesでは、コンテナアプリの監視とログ分析の機能も提供している。