概要
現在のIT業界では、DXが進む中でコンテナ技術とKubernetesが注目されています。vSphereなどの仮想化基盤を使用して仮想マシン(以降、VM)を運用している企業も多い中、VMとコンテナを統合管理したいというケースや、VMをコンテナにして既存のコンテナプラットフォームで扱いたいというケースなども出てくるかと思います。
しかし、VMをコンテナ化する際に、仮想化レイヤがハードウェアレベル(VM)とOSレベル(コンテナ)で異なるといった課題があります。今回紹介するOpenShift Virtualization(以降、OCP-Virt)は、既存のOpenShift上でコンテナとVMを統合管理することが出来るため、このような状況に対応することが出来ます。
本記事では、OCP-Virtの基本的な概要からアーキテクチャ、VMの移行ツール、他の仮想化基盤との比較について解説します。次回の記事では実際にOpenShift Virtualizationを触ってみようと思います。以前にもSIOS Tech. LabにOpenShift Virtualizationについて記載した記事があるので良かったらそちらも参考にしてみてください。
前提情報
本記事では、現時点で以下のバージョンを対象としています。
- OpenShift v 4.17
- OpenShift v4.17.3
- Migration Toolkit for Virtualization v2.7
OCP-Virt とは
OCP-Virtは、Red Hat OpenShiftのアドオンで、OpenShift Virtualization Operator をインストールすることで利用可能になります。これによって、OCP-Virtで、コンテナ環境上にVMを構成することが可能になり、コンテナとVMを既存のOpenShift上で同時に管理できるようになります。VMをKubernetesで管理することが出来るため、従来の仮想化環境よりも柔軟な運用が可能になります。OCP-Virtが提供する機能としては下記が挙げられます。
- Linux および Windows VMの作成と管理
- 各種コンソールおよび CLI ツールの使用によるVMへの接続
- 既存のVMのインポートおよびクローン作成
- NICおよびVMに割り当てられたストレージディスクの管理
- VMのノード間でのライブマイグレーション
OCP-Virtのインストールにはハードウェア要件があり、オンプレミスのベアメタルサーバーあるいはAWSのベアメタルインスタンスが必要になります。
OCP-Virt アーキテクチャ
OCP-Virtは、Kubernetes環境上でVMの作成・管理を可能にするOSSのKubeVirtを元にして開発されています。KubeVirt は動作する基盤としてKubernetesを使用し、KubernetesのAPIを拡張することで、Kubernetes環境上へのVMの構成を実現しています。
VMを動作させる仕組みとしてはKVMを使用しています。KVMはRHCOS(Red Hat Enterprise Linux CoreOS) のカーネル、QEMU・libvirt はOCPのPodの中で実行しています。
Image Source: https://tech-lab.sios.jp/archives/42280
ネットワークはCNIを通じて提供され、デフォルトでOVN-Kubernetes CNIを使用しています。Multus を使用することで、VMに追加の外部ネットワークの構成が可能となります。VMのディスクはCSIを通じて提供され、PV(永続ボリューム) を使用します。
OCP-Virt の主要コンポーネントについて説明します。
- virt-controller
- CRDで定義されたVMを監視し、VMを構成するPodをノードに割り当てます。
- virt-handler
- 各Workerノードで実行されるDaemonSetです。DaemonSetは全て(または特定)の各ノードで1つずつ実行されるリソース(Pod)です。ログ収集やモニタリングなど、クラスター全体のサービスを実行する際などに用いられます。
- API Serverやvirt-controllerと連携して、Podの作成などの操作を、virt-launcherに指示する役割があります。
- virt-launcher
- libvirtd と連携し、VMの作成や削除を制御します。
Image Source: https://www.redhat.com/en/blog/building-unified-hybrid-cloud-strategy-red-hat-openshift-virtualization
VMの移行ツールの紹介
OCP-Virtでは、既存の利用している仮想化基盤からの移行を支援するためのツールが Migration Toolkit for Virtualization (MTV) Operator として提供されています。MTVは様々な仮想化基盤で稼働する VM を OpenShift 上に移行するツールです。移行元として選択できる Provider は下記になります。
- VMware vSphere
- Red Hat Virtualization
- OpenStack
- VMware vSphere によって作成された Open Virtual Appliances (OVA)
- リモートの OpenShift Virtualization クラスター
移行はVMのコピーのような形式となり、移行プロセス中の移行元VMの停止タイミングを移行プロセス開始時にVMを停止するCold Migrationとカットオーバー段階(VMの移行が済んだ後)にVMを停止するWarm Migrationの2種類のタイプから選択することが出来ます。
移行時のネットワークとストレージのマッピングは下記の様に行います。
- ネットワーク
- オーバーレイネットワークの仮想スイッチに相当するもの同士をマッピングします。
- vSphereでは Port GroupとOCP-VirtのNetwork Attachment Definition (NAD)をマッピングします。
- Port Group:仮想スイッチ内でVMとの通信に用いられる仮想的なポート
- NAD:Podをネットワークに接続する方法を定義する CustomResourceDefinition
- ストレージ
- 仮想ディスクの格納先に相当するもの同士をマッピングします。
- vSphereではDatastoreとOCP-VirtのStorage Classをマッピングします。
- Datastore:VMのファイルシステムを格納するための論理的なコンテナ
- Storage Class:特定のストレージタイプ、アクセスモード、プロビジョニングポリシーなどのストレージの属性を定義したリソース
このように、現行の仮想化基盤からの移行方式も用意されているため、OpenShift への移行が簡単になっています。
その他仮想化基盤との比較
SUSE Virtualization (Harvester)
Harvesterは、オープンソースのハイパーコンバージドインフラストラクチャ(HCI)ソリューションで、KVMとKubernetesの技術を組み合わせた仮想化基盤になります。コンテナとVMの統合管理を行うといった点ではOCP-Virtと類似しています。HarvesterはRancherとの連携が可能になります。OCP-VirtはOpenShift上に構築されるため、コンテナプラットフォームがRancherかOpenShiftかといった点が違いになります。
VMware vSphere (vSphere)
vSphereは、仮想化基盤といえば必ず名前が上がる製品であり、企業環境での広範な採用実績を持っています。幅広いハードウェアとの互換性、高度な機能(vMotion、Storage DRS、High Availabilityなど)、および堅牢なセキュリティを提供します。vSphereは仮想化に関しては非常に高い成熟度を持っていますが、OCP-Virtとの大きな違いはKubernetesネイティブな統合が簡単にできるか否かになります。
Proxmox Virtual Environment (Proxmox VE)
Proxmox VEは、KVMとLinux Containers (LXC) をサポートするオープンソースの仮想化基盤です。ビルトインのクラスタリング機能を備えており、簡単にハイアベイラビリティ環境を構築できます。クラスタリングが可能で高可用性を提供できる点はOCP-Virtと類似していますが、Kubernetesネイティブであるか否かといった点が違いになります。
まとめ
OCP-Virtの基本的な概要からアーキテクチャ、VMの移行ツール、他の仮想化基盤との比較について解説しました。OCP-VirtはOpenShift のアドオンで、OCP-Virtでコンテナ環境上にVMを構成することが可能になり、コンテナとVMを既存のOpenShift上で統合管理できるようになります。次回の記事では実際にOpenShift Virtualizationを触ってみようと思います。
参考文献
https://www.vmware.com/products/cloud-infrastructure/vsphere
https://www.proxmox.com/en/products/proxmox-virtual-environment/overview