KubeVirtは、Kubernetes上で仮想マシンを管理するオープンソースプロジェクトであり、コンピューティング、ストレージ、ネットワークなど多様な機能を提供しています。CNCF(Cloud Native Computing Foundation)に所屬するこのプロジェクトは、仮想化技術とクラウドネイティブアーキテクチャの融合により、企業が柔軟かつスケーラブルな仮想マシン環境を構築するための基盤を提供しています。本記事では、KubeVirtが成長と可擴展性を実現するための技術的取り組み、CIシステムの改善、および実際の実裝事例について詳しく解説します。
KubeVirtは、Kubernetesのリソースとして仮想マシン(VM)を操作可能にし、仮想化技術をクラウドネイティブ環境に統合するためのプロジェクトです。Kubernetesのスケジューリング、ネットワーク、ストレージなどの機能を活用し、仮想マシンをクラウドネイティブのワークロードとして扱います。CNCFのエコシステムに位置づけられ、KubeVirtは仮想化とクラウドネイティブの境界を曖昧にし、企業が仮想マシンをKubernetes上で管理するための基盤を提供します。
KubeVirtの成長を支えるため、コミュニティの構造とCIシステムの最適化が進められています。
SIG(Special Interest Group)の構築:計算、ネットワーク、ストレージ、拡張性、可観測性の5〜6つのSIGが設立され、各分野の専門家が協力して開発を推進しています。SIGの議長が設置され、跨SIGの連攜を円滑化しています。
設計提案プロセス(VAP)の導入:コミュニティの設計提案プロセスを軽量なVAP(Vote and Propose)プロセスに置き換え、SIGの承認を得た設計が長期的にサポートされるようにしています。2025年までにこのプロセスが必須となる予定です。
バージョン1.5の更新重點:
KubeVirtの可擴展性を検証するため、Quarkという軽量な制御プレーン性能テストツールが導入されました。
CR(Custom Resource)の狀態変換メカニズム:
resourceRef
でターゲットオブジェクトを指定し、selector
で狀態條件を精確にマッチング。next
で目標狀態を指定。phase
フィールドで現在の狀態(例:running)を示します。狀態管理:Quarkコントローラーは、イベントに基づいて狀態変換をトリガーします(例:nodeが未就緒から就緒に)。VMIの狀態変換(例:scheduled → running)をサポートし、Cubewordのサービスアカウント権限問題を解決。
サービスアカウントのシミュレーション:QuarkはCubewordの全権を持つサービスアカウントをシミュレートし、Webhookの拒否更新を迴避。APIサーバーのimpersonation機能を活用し、指定されたサービスアカウントとして操作を実行。
CIシステムの統合:QuarkテストをCIシステムに統合し、小型クラスターで數千のVMIインスタンスを生成可能。CIリソースを節約しながら、制御プレーンの拡張性圧力とパフォーマンスを監視。
制御プレーンの圧力テスト:仮想マシンインスタンスの高密度デプロイにより、制御プレーンが高負荷下での安定性と拡張性を検証。
リアルな負荷シミュレーションの最適化:シミュレーション環境と実際のワークロードの類似度を高め、テストと実際のシナリオのギャップを減らす。
高階ワークロードテストの拡充:VMコントローラー、仮想マシンタイプ(instance type)など、より高階のテストケースを追加。
代替シミュレーションアーキテクチャの検討:CubeMarkプロジェクトを研究し、Podをノードオブジェクトとしてシミュレートし、Cubletコードと分離するアーキテクチャを検討。
コミュニティの參加促進:開発者にKubeVirtの可擴展性テストと最適化に參加を呼びかけ、エコシステムの発展を推進。
KubeVirtは、仮想化技術とクラウドネイティブアーキテクチャの融合により、企業が柔軟かつスケーラブルな仮想マシン環境を構築するための基盤を提供しています。SIGの構築やCIシステムの改善、Quarkツールの導入を通じて、KubeVirtは成長と可擴展性を実現しています。今後は、リアルな負荷シミュレーションの最適化や高階ワークロードテストの拡充により、さらなる信頼性とパフォーマンスを追求する必要があります。KubeVirtのコミュニティに參加し、技術の進化に貢獻することで、企業の仮想化環境の最適化が可能になります。