インフラがオンプレからクラウドになり、システムの開発・運用管理も変わりつつある。そこでクラウドネイティブ開発の技術として注目されているのが「Kubernetes」だ。

TECH+の人気連載「Kubernetes入門」の著者で、NTTデータ 技術革新統括本部 システム技術本部 技術戦略部長の正野勇嗣氏が12月13日、14日に開催された「TECHフォーラム クラウドインフラ Day 2022 Dec. 変革を支えるニューノーマルのITインフラとは」に登壇。運用面を中心にKubernetesの概要や、利用によって得られる価値について話した。

連載「Kubernetes入門」はこちら

【あわせて読みたい】「TECHフォーラム クラウドインフラ Day 2022 Dec. 変革を支えるニューノーマルのITインフラとは」その他のレポートはこちら

Kubernetes誕生の背景 - オンプレからクラウド、そしてマルチクラウドへ

Kubernetesはオープンソースのコンテナオーケストレーションツールだ。そもそもどうしてKubernetesが生まれ、必要とされるようになったのか。背景にあるのは、マイクロサービスの台頭だ。

マイクロサービスとは細かな単位に分割してシステムを開発するアプローチである。再利用性などの面でメリットはあるものの、運用面ではより細かな管理が必要となるほか、障害発生箇所の特定や復旧が難しい。障害によるシステム変更時のリリースも複雑になる。例えば、複数のマイクロサービスのうちの1つを差し替える際に、残りのマイクロサービスへの影響を把握しなければならない点などが挙げられる。

このような特性から、「マイクロサービス時代の今、運用の重要性が高まっている」と正野氏は言う。

マイクロサービスと運用について語る中で、同氏は仮想化技術にも触れた。メインフレームからオープン系、そしてクラウドへとシステムを構成するインフラが変化していく中、仮想化の進化を見ると、仮想化がない状態(レベル1)、ゲストOS(レベル2)、コンテナ(レベル3)ときて、現在はレベル4に入りつつある。レベル4とは、仮想化がオーケストレーションされた状態だ。これを実現するのがKubernetesである。

  • 技術の進化の歴史

仮想化技術の抽象度は、ハードウエア→ホストOS→ゲストOS→コンテナ→コンテナ・クラスタと進んでおり、Dockerがコンテナの技術であるのに対し、Kubernetesはコンテナ/コンテナ・クラスタの技術となる。

「初期の仮想化はホストOSとゲストOSが二重で管理されるかたちで、オーバーヘッドが高かったのです。コンテナの時代になると秒単位で立ち上がるため、スケールのリアルタイム性が高まっています」(正野氏)

正野氏が言うように、オンプレミスからクラウドとコンテナに移行することで、スケールのリアルタイム性が高まる。その価値としては、一時的にサーバ台数を倍増させてアプリケーションをデプロイできる「保守運用性」、障害が発生しても自動的に復旧する「信頼性」、負荷が高い時にコンテナが自動でスケールする「拡張性」の3つがあると正野氏は説明する。

中でも拡張性については、オンプレでは上流の要件定義工程でマシンのスペックを固めて開発に入っていたが、想定と実際が異なることが多くあった。しかし、クラウドやコンテナの時代では、その意思決定を後ろ倒しにして、リアルタイムにスケーリングすることが可能だ。

「旧来のオンプレミスではできなかったようなことが実現できる時代になってきているのです」(正野氏)

Kubernetesの3つの価値

そこでKubernetesの登場だ。

ギリシャ語で「船の舵取り」の意味で、読み方は”クーべネティス”。k8sと省略されることもある。クラウドとの親和性が高く、「デプロイやスケーリングを含めたアプリやコンテナの運用管理を自動化することができる」と正野氏は説明する。

「マイクロサービスのコンテナが乱立する状態で、それらを取りまとめる(オーケストレーションする)ツールになります」(正野氏)

同氏はKubernetesの価値として、「高い抽象度」「高い信頼性・回復性」「中立性」の3つを挙げた。

抽象度については、次のように説明する。

Dockerコンテナは通常1台のサーバに閉じて構築されるため、複数台のサーバにまたがるコンテナ環境構築のためには、さまざまな設定が必要になる。Kubernetesを使えば、サーバ単位でコンテナを管理するPodとサーバをまたがるPodを管理するReplicaSetを組み合わせることで、コンテナのクラスタ化を容易に構成可能だ。

信頼性・回復性については、Kubernetesでは「セルフヒーリング(自己回復)」と呼ばれている。障害により設定した稼働台数を下回った場合は自動的にコンテナが再起動され、ゼロダウンタイムを実現するというものだ。

では、中立性とはどういうことか。Kubernetesは非営利団体のLinux Foundation傘下のプロジェクト・Cloud Native Computing Foundation(CNCF)で標準化が進んでいる。オープンソースのKubernetesが各クラウドを抽象化する層を担うことで、特定の製品に依らない構築が可能になるというわけだ。