ITコラム

Kubernetesを軸に再定義されつつある、新しい「クラウド対応」の意味とは

記事をシェアする:

新野 淳一氏

著者:新野 淳一氏

ITジャーナリスト/Publickeyブロガー。
一般社団法人クラウド利用促進機構(CUPA)総合アドバイザー。
日本デジタルライターズ協会 代表理事。

 

Kubernetesが登場した頃、当初注目されていたのはコンテナオーケストレーション機能と、コンテナ上のアプリケーションが自由にクラウド間を移動できる、いわゆるハイブリッドクラウドやマルチクラウドの実現でした。

このKubernetesベースのハイブリッドクラウドやマルチクラウドはすでに複数のベンダから製品やソリューションが展開されるようになり、普及がはじまろうとしています。

しかしKubernetesの進化はそこにとどまらず、Knativeによるサーバレスプラットフォームの実現、ミドルウェアへの高可用性(HA)機能の提供、運用自動化の支援などに広がり、新しいプラットフォームになろうとしています。

Kubernetesはクラウドをどう変えようとしているのでしょうか。現状をまとめつつ展望してみましょう。


Kubernetesのホームページ

登場して3年でKubernetesはコンテナオーケストレーションの標準に

2014年6月にGoogleがオープンソースとして公開したKubernetesは、「コンテナマネジメントツール」や「コンテナスケジューラ」もしくは「コンテナオーケストレーションツール」であると紹介されました。

コンテナオーケストレーションツールとは、複数のコンテナからなるクラスタに対してロードバランスを提供する機能や、あるコンテナが異常終了したことを検知すると自動的に新たにコンテナを立ち上げるフェイルオーバーの機能などを提供するものです。コンテナを多数用いた分散アプリケーションの運用には、こうしたコンテナオーケストレーションツールの機能は欠かせないものとされています。

Kubernetesが登場してしばらくのあいだ、コンテナオーケストレーションの分野にはRancherやMesos、Swarmといった複数のツールが存在し、事実上の標準の座を争っていました。

しかしKubernetesが登場してから約3年後の2017年10月、それまで自社のコンテナオーケストレーションツールであるSwarmを持ってコンテナオーケストレーションツールの事実上の標準を目指していたDocker社が、Swamに加えてKubernetesもDockerに統合することをデンマークのコペンハーゲンで開催した自社イベント「DockerCon 2017 EU」で発表します。

この瞬間、Kubernetesはコンテナオーケストレーションツールの事実上の標準の座を射止めたことが誰の目にも明らかになりました。

ハイブリッドクラウド/マルチクラウドの基盤としてのKubernetes

この頃にはKubernetesを用いたハイブリッドクラウド/マルチクラウドを実現する製品が登場し始めます。
2017年6月には、IBMがKubernetesベースのIBM Cloud Privateを発表。すでにパブリッククラウドのIBM CloudでKubernetesのサポートを開始していた同社は、この製品によってパブリッククラウドとプライベートクラウドをKuberenetesでシームレスに統合するソリューションを提供。

2017年8月にはPivotalもKubernetesを用いたコンテナ環境「Pivotal Container Service」(PKS)を発表。Google Container Engime(GKE:当時の名称。現在はGoogle Kubernetes Engine)とKubernetesレベルで連係することにより、ハイブリッドクラウド/マルチクラウドの実現をアピールしました。

そして2018年6月にはKubernetesを統合したDocker Enterprise Edition(Docker EE)が登場。AWSやAzure、Googleが提供するKubernetesのマネージドサービスやオンプレミスのKubernetesなどをDocker EEが一元管理し、クラウド間のコンテナの移動などを実現する、マルチクラウド対応をKubernetesレベルで実現するものです。

もちろん、Kubernetesはさらに発展を続けます。コンテナオーケストレーションにとどまらない分散アプリケーションプラットフォームとして、さまざまな機能拡張が行われていくことになるのです。

Knativeによるサーバレスの実現も

2018年7月に発表された「Knative」は、Kubernetes上でサーバレスコンピューティング環境を実現することを目指したソフトウェアです。
現時点でのサーバレスコンピューティングは、代表的なAWS Lambdaをはじめ基本的にはクラウドに依存したプロプライエタリなアプリケーション実行環境であり、Knativeはそうしたサーバレス環境をオープンなものにすべく、開発が進められています。

2018年12月にリリースされたKubernetes 1.13では、ストレージベンダが自社製ストレージのためのプラグインを開発できるようにするための共通APIの「Container Storage Interface(CSI)」が正式版になりました。

個々のコンテナがそれぞれストレージと接続するのではなく、Kubernetesのレベルでストレージを管理することで、例えば、あるコンテナが何らかの理由で停止したとき、Kubernetesがコンテナのフェイルオーバーと同時にストレージのコネクションを適切な状態に設定してフェイルオーバー先のコンテナに接続できるようになります。

2019年3月にRed Hatが開設した「OperatorHub.io」は、Kubernetesの機能を拡張してアプリケーションの運用管理を支援する「Operator」と呼ばれるプラグインのオンラインマーケットです。

データベースの運用監視などはソフトウェアごとにノウハウがあります。OperatorはKubernates上でそうしたソフトウェア固有のノウハウやテクニックをプラグインとしてKubernatesに組み込む仕組です。そして「OperatorHub.io」は、そうしたプラグインを検索できるポータルになるわけです。
これによってKubernetesは運用自動化を支援するフレームワークへも拡張されていくことになります。

IBMはミドルウェアの一部機能もKubernetesへオフロード

Kubernetesはこれまでミドルウェアが備えていた機能の一部も置き換えつつあります。
IBMはWebSphereやDb2などをKubernetes対応するにあたり、それまでミドルウェア自体で抱えていたセッション管理、ルーティング、障害時リトライといった高可用性のための機能を取り出して、Kubernetesにオフロードしたことを明らかにしています。


IBMは従来型のシステムでDb2などのミドルウェアが自身で抱えていたルーティング、セッション管理、障害時リトライ、アプリケーション更新の機能を、Kubernetes環境に対応させたパッケージではKubernetes側にオフロードするアーキテクチャを採用した
 
 
日本IBM エグゼクティブアーキテクト 渡邉周一氏は、「これによりミドルウェアのコアだけがコンテナで稼働するようになるため、以前より軽快に動作するようになります」と、Kubernetesへのオフロードの利点を説明します。徹底的なKubernetes対応を突き詰めていくとアプリケーションの形はこうなる、という見本でしょう。

最近では2019年3月にRancher Labsが、クラウドほどコンピュータリソースが潤沢にあるわけではないエッジ環境でも動作する軽量なKubernetes実装「k3s」を発表しました。Kubernetesはクラウドにかぎらずあらゆる場所でコンテナを動かすための環境になろうとしています。

個別のクラウド対応と、クラウドに依存しないマルチクラウド対応の両立

過去約10年のあいだ、クラウドの進化とは、おもに各ベンダが提供する個別のパブリッククラウドの進化によって牽引されてきました。各ベンダとも、クラウド間の相互運用性よりもそれぞれのクラウドの進化や機能強化を優先して注力してきたともいえます。それゆえ、クラウドへの注目とは個別のクラウドの新機能への注目に近いものがありました。

しかしここ数年のKubernetesの急速な発展は、そうした個別のクラウドの進化に向いていた視線を明らかに奪っています。いまやほとんどすべてのパブリッククラウドが積極的にKubernetesのサポートを行っており、そのKubernetesのレイヤを通じてパブリッククラウド、プライベートクラウド、そしてエッジにまで広がるハイブリッドクラウドやマルチクラウドの実現は始まっています。

そしてここまで紹介してきたとおり、Kubernetesは個別のクラウドに依存しない分散アプリケーションプラットフォームとなり、ハイブリッドクラウドやマルチクラウドで実現できる機能がこれまで以上に急速に充実していくことは間違いないでしょう。もちろんそれと並行して今まで通り個別のクラウドの機能も進化していくことでしょう。

つまりこれからクラウドの進化はこの2つ、個別のクラウドの進化と、Kubernetesに代表される個別のクラウドに依存しない分散アプリケーション基盤の進化が並行して進んでいくことになるはずです。

日本IBMでお客様向けにシステムインテグレーション事業を担当するグローバル・ビジネス・サービス事業本部のCTO 二上哲也氏も、「アプリケーションを作るうえで、オンプレミスではこう作る、クラウド向けにはこう作る、ということではなく、どのプラットフォーム向けであっても同じように開発し、デプロイし、運用できることが生産性や効率化につながる」と、実際のシステム構築においてKubernetesで実現されるマルチクラウド対応には大きなメリットがあると発言しています。

これまでのクラウド対応とは、おもに特定のクラウドにフォーカスしてその上でシステムを構築することが中心でした。これからはそれに加えて、特定のクラウドに依存せず、ハイブリッドクラウドやマルチクラウドを用いた分散アプリケーション基盤で実現できることにも目配りをする。
この2つをアプリケーションに応じて適切に配分し構築することが、新しい「クラウド対応」と呼べるものになっていくのではないでしょうか。

More ITコラム stories
2019年12月6日

これからのIT基礎知識 クラウド・ネイティブという考え方 Vol.4

最終回のこのページでは、クラウド・ネイティブの代表的なアプローチであるコンテナ・オーケストレーター(ここではK […]

さらに読む

2019年12月2日

これからのIT基礎知識 クラウド・ネイティブという考え方 Vol.2

クラウド・ネイティブ基礎知識解説の連載2回目。イミュータブル・インフラストラクチャーを取り上げる。コンテナ移行 […]

さらに読む

2019年12月2日

これからのIT基礎知識 クラウド・ネイティブという考え方 Vol.1

OpenShift/Kubernetesの導入で成果をあげる道 CNCF(Cloud Native Compu […]

さらに読む