KubeVirt とは
KubeVirt は仮想マシン (VM) の実行、デプロイ、管理を可能にするオープンソース・プロジェクトであり、基盤となるオーケストレーション・プラットフォームとして Kubernetes を使用します。コンテナ内で仮想マシンを実行するプロセスは、コンテナネイティブ仮想化として知られています。KubeVirt は、コンテナ内の仮想マシンをパッケージ化し、両方のワークロードを単一のコンソールで管理することで、コンテナネイティブ仮想化を実現します。
KubeVirt では、仮想マシンは従来の仮想化環境と同じように動作しますが、コンテナ化されたマイクロサービスやクラウドネイティブ・アプリケーションと同じプラットフォーム上で実行できます。VM を含め、環境内のすべてのワークロードが同じ Kubernetes のインフラストラクチャ、ツール、管理によるメリットを得られます。
KubeVirt は Cloud Native Computing Foundation (CNCF) が後援するプロジェクトで、Red Hat OpenShift の機能の 1 つである Red Hat® OpenShift® Virtualization のオープンソース基盤です。Red Hat OpenShift Virtualization は、信頼性の高いハイブリッド・クラウド・アプリケーション・プラットフォーム上での従来の仮想マシンの移行と管理をサポートします。
KubeVirt の仕組み
KubeVirt は、Kubernetes のアプリケーション・プログラミング・インタフェース (API) を拡張することで動作し、他の Kubernetes リソースやツールと同様に仮想マシンとやり取りできます。そのため、コンテナと仮想マシンが同じクラスタ、ノード、ネットワークを共有できます。
KubeVirt が新たにもたらす機能として、主に次の 3 つの要素が挙げられます。
- カスタムリソース定義 (CRD):カスタムリソースとは、Kubernetes API を拡張するオブジェクト、そしてプロジェクトやクラスタに独自の API を導入できるオブジェクトです。カスタムリソース定義ファイルを使用すると、オブジェクトの種類を定義し、API サーバーでライフサイクル全体に対応できます。KubeVirt によって Kubernetes API に CRD が導入されることで、仮想マシンを他の Kubernetes オブジェクト (pod など) と同様に扱えます。
- コントローラ:コントローラは、クラスタ上で実行される一連のデプロイメントであり、新たな KubeVirt CRD を管理するための API エンドポイントを提供します。
- エージェント:エージェントはクラスタのワーカーノード上で動作し、仮想化に関連するノードタスクを管理します。
KubeVirt は、KVM ベースの仮想マシンを内部で実行する pod と捉えることもできます。Kubernetes では、pod とは同時に実行され、同じリソースを共有するコンテナのグループを指します。また、KVM (カーネルベースの仮想マシン) とは、Linux® カーネルを拡張してハイパーバイザーとして機能させるオープンソース・テクノロジーです。KubeVirt では、仮想マシンインスタンスは pod と同様に実行されます。このため、KubeVirt は仮想マシンの「停止中」、「一時停止」、「実行中」といった状態を管理し、仮想マシンのプロビジョニング、スケジューリング、移行などの操作を実行できます。
Red Hat のリソース
Kubevirt でできること
仮想マシンの作成
virtctl コマンドラインで「create vm」というサブコマンドを使用すると、Kubernetes 環境内で仮想マシンを作成できます。また、インスタンスの種類や設定を制御して、パフォーマンス・プロファイルの設定やランタイム特性のカスタマイズなど、多数の仮想マシンの構成を一括管理することも可能です。
仮想マシンの管理
virtctl コマンドライン・インタフェース (CLI) は Kubernetes の標準コマンドラインツールである kubectl と併用でき、Kubernetes クラスタ内の仮想マシンを管理するための仮想化固有のアクションを提供します。virtctl を使用することで、仮想マシンの管理者は次のアクションを実行できます。
- 仮想マシンの停止、起動、再起動、一時停止
- ディスクイメージの管理
- 仮想マシンのシリアルコンソール、グラフィカルコンソール、および SSH コンソールへのアクセス
- ノード間の移行
Kubernetes のオーケストレーションとスケジューリングによる複層的な管理で、VM をスムーズに継続的に稼働できます。コンテナワークロードも実行している場合は、KubeVirt を使うことで、単一のコントロールプレーンを通じたコンテナと VM の管理と監視が可能になります。
仮想マシンの移行
KubeVirt は、ライブマイグレーションを含む複数の仮想マシン移行手法に対応しています。ライブマイグレーションは、仮想マシンへのアクセスを中断することなく、VM をあるホストから別のホストに移行し、VM のストレージをマッピングし直すプロセスです。これは、常時稼働が必要な VM に適したオプションです。VM をノード間やプラットフォーム間で移行する際に、業務の中断を避けられます。
テスト性とスケーラビリティ
Kubernetes 上で仮想マシンを実行することで、追加機能をテストできます。たとえば、KubeVirt VM でディスクストレージを使用できるようにする互換性のあるテクノロジーであり、ストレージリソースを管理できる Containerized Data Importer (CDI) はその一例です。
さらに、Kubernetes はスケーラビリティに配慮して構築されています。新機能のテスト、ワークロードへの機能の追加、レガシー・アプリケーションのモダナイズを進める際には、中央処理装置 (CPU) の使用状況に応じた自動スケールアップまたはスケールダウンが可能です。
Kubevirt のメリット
クラウドネイティブ統合
KubeVirt では、コンテナ化が難しいワークロードを、クラウドネイティブのアプリケーションやマイクロサービスと一緒に実行できます。仮想化されたアプリケーション・コンポーネントは、統合開発プラットフォームの一部として組み込まれます。このプラットフォームでは、開発者はコンポーネントがコンテナ化されたものでも、仮想化されたものでも、あるいはコンテナ化されたコンポーネントと仮想化されたコンポーネントが混在していても、アプリケーションの構築、管理、デプロイ、スケーリングを行えます。
KubeVirt を使用すると、仮想マシンは、ロールベースのアクセス制御 (RBAC)、統合された監視とロギング、サービスメッシュなど、Kubernetes ネイティブのさまざまな機能との統合によるメリットも受けられます。
モダナイゼーション
仮想化により、単一のハードウェア上で異なるオペレーティングシステム環境を迅速に起動および停止できます。このアプローチは、IT エコシステムに柔軟性、スピード、安定性をはじめとする数多くのメリットをもたらします。しかし、仮想化プラットフォームが進化し、コストも上昇しているため、新しいソリューションを模索している企業もあります。その中で KubeVirt が魅力的な選択肢となる理由は、単にハイパーバイザーに代わるものではなく、モダナイゼーションのための道筋とプラットフォームを提供するからです。
KubeVirt を使用することで、コンテナと VM を並行して作成および実行できるだけでなく、新しいアプリケーションの開発やレガシーワークロードのモダナイズに最適な統合プラットフォームも利用できます。モダナイズを進めつつ、クラウドネイティブ開発、人工知能、および機械学習の進歩に触れるために必要なリソースとテクノロジーを利用できます。
高度な機能と同等性
CNCF のインキュベーション・プロジェクトである KubeVirt は、立ち上げ時から Kubernetes ネイティブな高度な機能を備えているだけでなく、オープンソース・コミュニティのコントリビューターによって絶えず改善や拡張が続けられています。
KubeVirt は、VMware vSphere や HyperV などの他のエンタープライズ向け仮想化プラットフォームと同等の機能を備えており、従来の仮想化環境で行っていたタスクをこれまでと同様に実行できます。
パフォーマンス
KubeVirt は、CPU 要件とメモリ割り当ての変動に対応でき、従来の仮想化ソリューションと比較してレイテンシーが低減します。ベアメタルハードウェアとランタイム環境間の抽象化レイヤーも最適化し、リソースのより効率的な利用とパフォーマンスの向上を実現します。
KubeVirt コミュニティのスケーリングに関する Special Interest Group (SIG-scale) は、KubeVirt の各リリースのパフォーマンスとスケーラビリティを評価する必要性を認識し、KubeVirt のデータセンター環境におけるスケーラビリティを監視する手法を考案しました。KubeVirt は現在、リリースごとにこのパフォーマンスとスケーラビリティのデータを共有しています。
組み込みのセキュリティ
KubeVirt は Kubernetes ネイティブセキュリティを活用し、仮想マシンを含むあらゆる環境において、ポリシーが一貫して適用されるようします。ユーザーはクラスタ内のホストごとにシステムレベルの制御を設定するのではなく、単一の設定 (ネットワークポリシーなど) を指定してデプロイメント内のすべての pod に適用できます。この機能により、仮想マシンのセキュリティを一貫して、大規模に管理しやすくなります。
CI/CD システムや Kubernetes のアドミッション・コントローラ・フレームワークにポリシーを組み込むことで、組織はソフトウェア開発ライフサイクルにおいて早期に制御ポリシーを適用しやすくなり、実行時にリスクにさらされることを防ぎます。
KubeVirt と Red Hat
Red Hat OpenShift Virtualization は、KubeVirt と KVM をベースとした最新のアプリケーション・プラットフォームであり、仮想マシンとコンテナを並行して実行できます。この製品に含まれる仮想化移行ツールキットは、従来の仮想化プラットフォームからの移行に必要なツールを提供するもので、簡単な数ステップで移行を完了できます。移行から大規模な Day 2 オペレーションや修復に至るまで、Red Hat Ansible® Automation Platform がデリバリーをスピードアップします。Red Hat Advanced Cluster Management for Kubernetes を使用すれば、単一のコンソールから VM のセキュリティとパフォーマンスを監視できます。その他にもストレージ、バックアップと障害復旧、ネットワークのためのサポートオプションやパートナーとの統合を通じて、ハイブリッドクラウド全体で仮想インフラストラクチャをスムーズかつ継続的に稼働できるように、また、時期が来たらモダナイズについても Red Hat がサポートします。
Red Hat 公式ブログ
Red Hat のお客様、パートナー、およびコミュニティのエコシステムに関する最新の情報を入手しましょう。