GoogleがKubernetesをオープンソース化し、節目となる10年。黎明(れいめい)期からKubernetesに関わってきた青山真也氏と、ニュータニックス・ジャパンの吉瀬淳一氏が対談。Kubernetesの利用が広まった理由、Kubernetesが企業にもたらす価値を語り合った。
GoogleがKubernetesをオープンソース化し、節目となる10年。なぜ現代のアプリケーション運用基盤のデファクトとして、Kubernetesの利用は広まったのか。この10年の変化を、有識者はどう見ているのか。
本稿では、日本のクラウドネイティブコミュニティをリードし、クラウドネイティブ技術関連のカンファレンス「CloudNative Days」のCo-Chairを7年間務めている青山真也氏(シニアソフトウェアエンジニア)と、ニュータニックス・ジャパンの吉瀬淳一氏(アドバイザリーソリューションアーキテクト)による対談から、Kubernetesの利用がもたらす価値、企業における活用のヒントを探る。
※以下、敬称略。
──Googleが「Kubernetes」をオープンソース化し、Cloud Native Computing Foundation(CNCF)に寄贈してから10年という節目を迎えました。現在の企業の活用状況をどう見ていますか。
青山 今は、あって当たり前の存在になったと感じています。ここまで広まったのは、それ以前に「Docker」がはやったことが大きいでしょう。そしてそのコンテナを本番環境で動かすコンテナオーケストレータとして注目され、“コンテナ戦国時代”を経て最終的に残ったのが、Kubernetesでした。
吉瀬 私が「KubeCon」に参加した2016年当時から、名だたる企業が参加していました。Dockerはアプリケーションをビルド、シップ、デプロイでポータブルに開発環境→ステージング環境→プロダクション環境と持っていける点が魅力で、まずそこに開発者が飛びついた。
青山 そうですね。コンテナ技術は開発者体験が良く、生産性も向上する。同時に運用者にとってもメリットが多い。例えば、コンテナはイミュータブルなインフラとして使うことが前提で、VM(仮想マシン)のように使い回すことはしません。役目を終えたらすぐに使い捨てる。他にも、コード化やアプリケーション実行の再現性を高められる。運用者にとっても都合が良いので開発者と運用者の両方が「コンテナ最高!」となりました。
吉瀬 インフラの目線で言えば、それ以前の「OpenStack」から、自動化する取り組みが加速していました。例えば「Apache Hadoop」の分散ワークロードを管理するために、「Apache Mesos」の分散クラスタリソースマネージャーを使うなどです。ただ、Hadoopのワークロード管理は難しく、コンテナのワークロードに使う流れとなり、そのタイミングでKubernetesがオープンソースソフトウェア(OSS)になった。
開発者にとって便利な環境と、インフラの分散管理という考え方がKubernetesという1つのソフトウェアでまとまり、統合されたAPIでコントロールできるようになりました。Kubernetes以前は、アプリケーションはアプリケーション、インフラはインフラでした。
開発者にとってビルド、シップ、デプロイは、例えばJavaのWARファイルでも同じようなことが実現できていましたが、そのデプロイを管理するのはアプリケーションサーバを運用するインフラ担当者でした。それがKubernetesで1つになった。これは画期的な出来事でした。
青山 その通りですね。Kubernetesをインフラのプラットフォームとイメージする人もいますが、私は、アプリケーション実行基盤だと考えています。YAMLや宣言的APIを使って開発者と運用者が歩み寄れる。両者にとってちょうどいい基盤なのです。
──Kubernetesの採用がここ数年で広まった一方で、課題を抱える企業も多いようです。
吉瀬 初期のKubernetesがターゲットにしていたワークロードと、一般のエンタープライズのワークロードは性質が異なります。初期のKubernetesはデータという概念のないステートレスなアプリケーションをターゲットにしていましたが、企業がこれまで運用してきたシステムは、データを持つSoR(Systems of Record)、つまり、ステートフルなのです。
企業がKubernetesを利用する場合は、この違いがアプリケーション面でもインフラ面でも課題となります。スケールアップを想定した既存のアーキテクチャを、クラウドネイティブのようなスケールアウトでの拡張を前提としたアーキテクチャに変えることはそもそも簡単ではないのです。
青山 新規のシステムやワークフローシステムのようなコンテナ化しやすいアプリケーションもありますが、コンテナ化できないアプリケーションも数多くあります。吉瀬さんが指摘するように、ステートをたくさん持っていて、そもそもの作りが違います。私自身、そういったアプリケーションをそのままコンテナ化してKubernetesできちんと動いているケースは見たことがありません。
その一方でKubernetesは、OSSでありベンダーロックインを避けられること、さまざまなOSSを組み合わせて拡張できること、オンプレミスでも柔軟に運用できるといったメリットがあります。
既存システムの全てをクラウドネイティブに移行するというのではなく、Kubernetesに適した形にアプリケーションを改修できる。その上で生産性の向上などに価値を感じる場合には、積極的に使い分けて利用してほしいと思います。
──コンテナ管理という観点では、Kubernetesのマネージドサービスやサーバレスサービス、ベンダー独自のコンテナ実行サービスもあります。何を使えばよいか悩む企業も多いようです。
青山 目安としては、軽量・限定的なワークロードはサーバレスを利用することです。例えば、ミリ秒単位で動くようなワークロードや、常時動くわけではないワークロード、何かのイベントを契機にワークフローの一部として動くワークロードなどです。クラウドプロバイダーにロックインされますが、一定の制限の下でそれに適した形で作り込まれているため、そういったワークロードほどサーバレスを使うメリットは大きいです。
一方、柔軟で拡張性が求められるさまざまなワークロードや大規模な環境ではKubernetesが向いています。Kubernetesに限らず、自社で実現したいことを踏まえて選択することが重要です。
吉瀬 多くの企業がパブリッククラウドだけでなく、オンプレミスに戻ってこられる基盤を求めています。特に、生成AI(人工知能)のようなワークロード、つまり、オンプレミスから外に出せないデータを使いたいという場合、ベンダー独自のクラウド環境で構築してしまうと、オンプレミスに戻せなくなります。Kubernetesを中心とした基盤なら移行が可能という点は、企業が採用する基準にもなるでしょう。
──Kubernetesのメリットである拡張性、柔軟性、可搬性の高さは、どういったシーンで役立ちますか。
吉瀬 よく聞くのが「クラウド環境で開発して、オンプレミスで運用する」というパターンです。日本企業は開発を外部パートナーにまかせるケースがほとんどで、新規開発するアプリケーションの多くはコンテナ環境で稼働させることを前提としています。
そこでKubernetesを用いて、外部パートナーがコンテナアプリケーションを開発し、ユーザー企業のオンプレミス環境で運用すれば、効率良く開発、運用できるようになります。
青山 Kubernetesがあればどのような環境でも実行できるという点は、かつてLinux Foundationのエグゼクティブディレクターであるジム・ゼムリン氏が述べたように、本当に「クラウド時代のLinux」になりましたよね。Kubernetesはクラウド上でOSのようなレイヤーになっていて、その上で動くアプリケーションはどのクラウドでもシステムとして動かせます。
吉瀬 Linux OSは1台でしか動きませんが、Kubernetesは100台だろうが、1万台だろうが1つのOSとして動きます。Nutanixは「Nutanix Kubernetes Platform」(NKP)というKubernetesのサービスを提供していますが、もちろんそこでも動きます。
NKPは、クラウドプロバイダーやCNCFが推進するOSSのツールやコンテナアプリケーションをそのまま動かすことができます。例えば、Amazon Web Services(AWS)のAPIと連携して、「Amazon Elastic Kubernetes Service」(Amazon EKS)のクラスタをNKPから展開できます。その上で可観測性ツールの「Grafana」やサービスメッシュの「Istio」、ポリシー管理の「GateKeeper」、コスト管理の「kubecost」などをマルチクラウド環境で動かすこともできます。CSI(Container Storage Interface)でストレージを管理して、ステートフルなアプリケーションを管理することも可能です。
青山 NKP上で、Amazon EKSが動くというのは面白いですね。クラウドで開発してオンプレミスで運用するフローをシンプルに実現できそうです。GrafanaやIstioなど、オンプレミスでもパブリッククラウドでもKubernetes周辺のOSSを容易に導入、活用できる点もよいと思います。
吉瀬 ただ、ここでよく分からなくなるのが「クラウドネイティブ」という言葉の定義です。Nutanixは、NKPで「エンタープライズ対応のクラウドネイティブスタックを提供するソリューション」と、うたっています。これは、CNCFの定義に照らせば厳密には異なるかもしれません。ただ、CNCFの定義は、クラウドプロバイダーのサービスに当てはまっているわけでもありません。
多くの企業にとっても、何がクラウドネイティブかははっきりしていないのではないかと思います。
──では、クラウドネイティブをどのように考えればよいのでしょうか。
吉瀬 私は個人的に3つの要素を踏まえれば、それをクラウドネイティブと呼んでもいいと考えています。スケーラビリティ、レジリエンス、APIです。この3つを満たすプラットフォームは実は少ないのですが、Nutanixは、この3つの要件を満たしています。NutanixはHCI(ハイパーコンバージドインフラ)を提供していた時代から、すでにクラウドネイティブだったといえます。
青山 これは面白い視点だと思います。クラウドネイティブを考えるときに重要なのは、「クラウドネイティブで何を目指すのか」です。ソフトウェアもツールの一つですから、企業ごとに目標も違いますし、捉え方にもグラデーションがあります。クラウドネイティブな運用ができること、従来型の運用もできること、その両方を同じプラットフォームで実現できることで使い分けられることは重要です。
吉瀬 Nutanixは、1つの管理コンソールから、従来型のVMで構成されるインフラ環境と、NKPを使ったクラウドネイティブな環境の両方を管理できます。VMで構築されているワークロードをいきなりクラウドネイティブに移行させるのは限界があります。「だったら、分けましょう」というのが、Nutanixの考え方です。
青山 VMに乗っているアプリケーションを単にコンテナ化しても、コンテナに適していないアプリケーションにしかなりません。起動が遅かったり、停止に時間がかかったりします。それらをどう変えていくかは大きな課題です。
インフラについても、バージョンアップへの追随やアップデートに伴う改修など、さまざまな課題があります。運用の認知負荷が高まる中で、統合管理できるツールの存在は大きな助けになります。
吉瀬 先述したように、日本企業は開発を外部パートナーに任せることが多く、Kubernetesに対するナレッジやノウハウを自社でどう蓄積するのか、クラウドネイティブな考え方にどうマインドチェンジするかも課題ですね。NKPは、共通プラットフォームを構築するソリューションでもあります。NKPを利用して運用の認知負荷を下げる、ナレッジやノウハウを集合させる、プラットフォームエンジニアリングを推進させることも支援できるでしょう。
──最後にメッセージを頂けますか。
青山 「OSSはいつか廃れる」という見方をされることもありますが、Kubernetesはそのフェーズを乗り越え、10年存続するプロダクトになりました。グローバルでますます活用が広がり、Kubernetesを前提とした周辺のOSSも増えてきています。この流れは今後も続くでしょう。Kubernetesを活用してビジネスの成長につなげてほしいと思います。
吉瀬 NKPは、2023年にNutanixが買収したD2iQ(元Mesosphere)の技術と、Nutanixの強みである分散ストレージ技術を融合させたものであり、成熟した基盤だと自負しています。エンタープライズにおけるハイブリッド/マルチクラウド環境でのクラウドネイティブの推進支援はもちろん、今後、生成AIなど新たなワークロードを支援するためのサービス強化も進めていきます。
Copyright © ITmedia, Inc. All Rights Reserved.
提供:Nutanix Japan合同会社
アイティメディア営業企画/制作:@IT 編集部/掲載内容有効期限:2025年4月2日