メニュー
資料請求 お問い合わせ
2025-12-022025-11-24

OpenShift Virtualization構築ハンズオン:Operator導入からRHEL VM作成・ネットワーク設定まで

はじめに

みなさん、こんにちは!Red Hat OpenShift(以下OpenShift)の構築を担当している立古です。

さっそくですが、「脱VM」や「クラウドネイティブ」という言葉が広がる中、仮想化のあり方も大きく変わりつつあります。そんな中で注目されているのが、OpenShift Virtualization(以下OCP-Virtです。これは、OpenShift上で仮想マシンを動かせる機能で、コンテナとVMを同じ環境で一元管理できるのが大きな特徴です。

OCP-Virtを使えば、今までの仮想化環境からスムーズに移行できるだけでなく、目的に応じたVM環境を簡単に作り分けることができます。

本記事では、OCP-VirtVMを作成し、VM専用ネットワークを構築する手順を紹介します。

OCP-Virtとは

OCP-Virtの主要コンポーネント

OCP-Virtの重要なコンポーネントを説明します。

KubeVirt

OCP-Virtの中核を担う仮想化エンジンで、KVMベースのVMKubernetesPodとして扱えるようにします。VMのライフサイクル管理、リソース割り当て、ネットワーク設定などをKubernetesの仕組みで制御できます。

Containerized Data Importer(CDI)

VMのディスクイメージを外部から取り込むための仕組みです。ISOQCOW2などのイメージを、KubernetesPVC(永続ボリューム)として取り込む際に使用されます。MTVでもこのコンポーネントが活用されます。

Multus CNI

VMに複数のネットワークインターフェースを割り当てるための仕組みです。Podネットワークとは別に、専用ネットワークやVLANを割り当てることで、環境分離やセキュリティ強化が可能になります。

OCP-Virtのエディション

OCP-VirtOpenShiftの一部として提供されますが、コンテナを使わずVMのみを運用したいユーザー向けに、Red Hat OpenShift Virtualization Engine Editionという専用エディションも用意されています。

このエディションでは、OpenShiftのコンテナ機能を最小限に抑え、仮想化機能に特化した構成で運用することが可能です。VMベースのインフラを維持しつつ、将来的なコンテナ移行にも備えられる柔軟な選択肢です。

OCP-Virt導入

環境情報

OpenShiftバージョン

4.18.15

Operatorバージョン

OpenShift Virtualization 4.18.2

NMState 4.18.0-202505150334

OpenShiftクラスター情報リソース

SNO(シングルノード)

16vCPU/32GBMem/500GBストレージ

ネットワーク

NIC4個

NIC0/NIC1:machiNetwork

NIC2/NIC3:VM専用ネットワーク

構成図

OCP-Virt 構築手順

OCP-Virt Operatorインストール

まずは、OCP-Virtを使えるようにするためのOperatorをインストールします。

1.OpenShiftにログインし、左メニューから「OperatorsOperatorHub」を開きます。

2.検索バーに「Virtualization」と入力し、「OpenShift Virtualization」を選択します。

3. チャネルは ”stable” 、バージョンは最新のものを選択し、[インストール]をクリックします。

4.以下のデフォルトの設定で[インストール]します。

  • 更新チャネル:stable
  • バージョン:4.18.2
  • インストールモード:クラスターの特定のnamespace
  • インストール済みのnamespace:Operator推奨のnamespace:openshift-cnv
  • 更新の承認:自動

インストールが完了すると、「Installed Operators」に表示されます。

HyperConverged作成

1.Webコンソールのメニューから「Operator>インストール済みのOperator > OpenShift Virtualization」を選択して表示される画面上の、OpenShift Virtualization Deployment [インスタンスの作成]をクリックします。

2. パラメータは全てデフォルトのままで、一番下までスクロールし[作成]をクリックします。

3.作成後、表示に従いWEBコンソールを更新します。

WEBコンソールのメニューに Virtualization の項目が追加されます。

ストレージ設定

Hostpath Provisioner (HPP) 設定

Hostpath Provisioner (HPP)

HPP は、OpenShift ノードのローカルディスク領域を使って、仮想マシンのディスク(PVC)を動的に作成・管理するために使用されます。

HPP は、ホストの特定ディレクトリ(パス)をストレージプールとして登録し、OCPVVM PVCを要求すると、HPP がそのパス内にディスクファイルを作成します。

これにより、外部ストレージがなくても VM 用のディスクを簡単に提供できます。

1.Webコンソールのメニューから「Operator>インストール済みのOperator > OpenShift Virtualization」を選択して表示される画面上の、HostPathProvisioners Deployment [インスタンスの作成]をクリックします。

2.必須項目の storagePool のパラメータを入力します。

n  name:任意のストレージプール名(今回は vm-storage-pool

n  pathPV作成用のローカルディレクトリのパス(今回は /data/vm-volume

注意:ストレージプールは OS と同じパーティションに置かないこと。

OS と同じパーティションに置くと、OS の領域を圧迫してしまい、ノードが不安定になる可能性があるため。

3.その他のパラメータはデフォルトで[作成]をクリックします。

4.ローカルディスクのstoragePoolを使用するストレージクラスを作成します。

n  metadata.name:任意のストレージクラス名(今回は hostparh-csi

n  provisionerkubevirt.io.hostpath-rovisioner

n  volumeBindingModeWaitForFirstConsumer

n  parameters.storagePoolHPPで設定したストレージプール名

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: hostpath-csi
provisioner: kubevirt.io.hostpath-rovisioner
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
parameters:
storagePool: my-storage-pool

クラスターにyamlを適用します。

$ oc create -f storageclass_csi.yaml [Enter]

デフォルトストレージクラス設定

デフォルトストレージクラスとは複数のストレージクラスが存在する場合にデフォルトで使用されるストレージクラスです。 今回の環境ではストレージクラスは1つですが、設定しておきます。また設定すると、仮想マシンを効率的に作成できるブートソースを自動的に更新します。

$ oc patch storageclass hostpath-csi -p '{"metadata":
{"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' [Enter]

$ oc patch storageclass hostpath-csi -p '{"metadata":
{"annotations":{"storageclass.kubevirt.io/is-default-virt-class":"true"}}}' [Enter]

ネットワーク設定~VM専用ネットワークを作成~

NMState Operatorインストール

OpenShiftクラスター上で ノードのネットワーク設定を管理するためのオペレーターです。

VMへの外部アクセスを設定するには、Kubernetes NMState Operator をインストールする必要があります。

1.OpenShiftにログインし、左メニューから「OperatorsOperatorHub」を開きます。

2.検索バーに「NMState」と入力し、「Kubernetes NMState Operator」を選択します。

3.チャネルは ”stable” 、バージョンは最新のものを選択し、[インストール]をクリックします。

4.以下のデフォルトの設定で[インストール]します。

更新チャネル:stable

バージョン:4.18.0-202505150334

インストールモード:クラスターの特定のnamespace

インストール済みのnamespaceOperator推奨のnamespace:openshift-nmstate

更新の承認:自動

5.Webコンソールのメニューから「Operator>インストール済みのOperator > Kubernetes NMState Operator」を選択してNMStateのタブをクリックします。

6. [NMStateの作成]をクリックします。

7.  パラメータは全てデフォルトのままで、一番下までスクロールし[作成]をクリックします。

8.作成後、表示に従いWEBコンソールを更新します。

WEBコンソールのメニューのネットワーク の項目に関連リソースが追加され、GUIで設定できるようになります。

bondingの作成

NNCPNodeNetworkConfigurationPolicy)はノードのネットワーク設定を定義するカスタムリソースです。NMStateOperator が読み取り、ノードに適用します。

物理NICの冗長化と可用性向上のために、bonding を作成します。

1.OpenShiftにログインし、左メニューから「ネットワーク」NodeNetworkConfigurationPolicy」を開きます。

2.NodeNetworkConfigurationPolicyの画面で〔Create〕をクリックします。

[From Form]を選択します。

3.パラメータを入力し、〔Create〕をクリックします。

■Policy name:任意のポリシー名(今回はcreate-bond1

 ■Interface name:任意のインターフェース名(今回はbond1

■Network stateUp

■TypeBonding

■IP configuration:チェックしない(IPアドレスは割り当てない)

■PortVMネットワーク用の物理インターフェースをカンマ区切りで指定

RHCOSにログインし事前に確認しておく。今回はens2f0,ens2f1

■Aggregation modeactive-backup

4.NNCPのステータスを確認します。

$ oc get nncp [Enter]
NAME            STATUS    REASON
create-bond1      Available    SuccessfullyConfigured

RHCOSにログインして、$ nmcli connection show bond1が作成されていることを確認してみてください。

Linuxブリッジ作成

VMが物理ネットワークに直接接続できるようにするためにLinuxブリッジを作成します。

こちらもNNCPで設定していきます。

1.OpenShiftにログインし、左メニューから「ネットワーク」NodeNetworkConfigurationPolicy」を開きます。

2.NodeNetworkConfigurationPolicy の画面で[Create]をクリックします。

[From Form]を選択します。

3.パラメータを入力し、[Create]をクリックします。

Policy name:任意のポリシー名(今回はcreate-br-ex1

Interface name:任意のインターフェース名(今回はbr-ex1

Network stateUp

TypeLinux bridge

IP configuration:チェックしない(IPアドレスは割り当てない)

Port作成したbonding NIC を指定(今回はbond1

4.NNCPのステータスを確認します。

$ oc get nncp [Enter]
NAME            STATUS    REASON
create-bond1      Available    SuccessfullyConfigured
create-br-ex1      Available    SuccessfullyConfigured

RHCOSにログインして、$ nmcli connection show br-ex1が作成されていることを確認してみてください。

NetworkAttachmentDefinitionsNAD)作成

VMLinuxブリッジに接続できるようにするために、NADを作成します。

1.OpenShiftにログインし、左メニューから「ネットワーク」NetworkAttachmentDefinitions」を開きます。

2.NetworkAttachmentDefinitions の画面で[Create]をクリックします。

3.パラメータを入力し、[Create]をクリックします。今回はdefaultのプロジェクトに作成します。defaultのプロジェクトに作成すると、すべてのネームスペースのVMNADを割り当て可能です。

■Name:任意のNAD名(今回はnad-br-ex1

■Network TypeLinux bridge

■Bridge name作成したbonding インターフェースを指定(今回はbr-ex1

4.NADが作成されていることを確認します。

# oc get network-attachment-definitions.k8s.cni.cncf.io [Enter]
NAME                           AGE
nad-vr-ex1                     1m

OCP-Virt仮想マシン設定

仮想マシン作成

Webコンソールを使用して、RHEL 9.6の仮想マシンを作成します。

事前に、virtctl image-upload コマンドを用いて、RHEL 9.6QCOW2イメージ(rhel-9.6-x86_64-kvm.qcow2)を、default ネームスペースのPVCにアップロード済みです。

このPVCのクローンを仮想マシンのディスクとして指定し、仮想マシンの作成を進めていきます。

1.VirtualizationVirtual Machines

2.OpenShiftにログインし、左メニューから「VirtualizationVirtual Machines」を開きます。

3.VirtualMachinesの画面で[Create VirtualMachine]をクリックします。

[From template]を選択します。

4. VirtualMachineのテンプレート画面で、RHEL9を選択します。

今回はdefaultのネームスペースに仮想マシンを作成してしまいましたが、用途ごとにネームスペースをわけて管理するのが好ましい運用です。

5.仮想マシンを作成するための各種設定を画面上で行います。以下は必須項目です。

Storage > Disk sourcePVCclone PVC

PVC projectQCOW2イメージを格納するアップロード先PVCのネームスペース(今回はdefault

PVC nameQCOW2イメージを格納するアップロード先PVC

Disk sizerootdisk のサイズ

デフォルトストレージクラスが使用されます。

今回はQCOW2PVC30GiBで作成されているのでデフォルト値は切り上がりで31GiBが表示されていました。

VirtualMachine name:任意の仮想マシン名(今回はtest-rhel9.6

画面下部には、仮想マシンの作成方法として以下の2つのオプションが表示されます:

Quick create VirtualMachine:基本設定のみで素早く仮想マシンを作成します。

Customize VirtualMachine:リソース、ストレージ、ネットワークなどの詳細設定を行うことができます。

今回は、VM専用ネットワークに接続するためのNICを追加する必要があるため、[Customize VirtualMachine] を選択して、仮想マシンの詳細設定画面へ進みます。

仮想マシンのNIC追加

1.詳細設定のCustomize and create VirtualMachineの画面で Network interfaces のタブをクリックします。

2.Network interfaces の画面でタブをクリックします。

3.この画面では、仮想マシンへのNICの追加や、既存NICの設定変更が可能です。

[Add network interface] ボタンからVM専用ネットワークに接続するためのNICを追加します。

4.設定後、[Save] をクリックすることで、NICの追加が完了します。

■Name:インターフェース名(今回はvmnet

■Model:デバイスモデル(今回は推奨かつデフォルトのvirtio

■Network:仮想マシンのNICが接続されるNAD

5.[Create VirtualMachine]VMを起動します。仮想マシンがVM専用ネットワークのみを使用する場合はPod networking用のNICは削除しても問題ありません。

6.仮想マシンの作成直後は、ステータスが 「Provisioning」 となり、バックエンドでディスクの割り当てやネットワーク設定などの初期処理が行われます。この状態では、仮想マシンはまだ起動しておらず、準備中の段階です。

数分待つと、ステータスが 「Running」 に変わり、仮想マシンが正常に起動したことを示します。

RHEL VMのネットワーク設定

1.仮想マシン起動後、仮想マシンのweb コンソール にログインします。

2.仮想マシンに複数のNICが接続されている場合、各NICMACアドレスを確認します。

この情報をもとに、OpenShift上で設定したNIC(今回は vmnet)に対応するデバイス名(例:eth1など)を特定します。

3. 対象のNICに対して、nmcli nmtui を使用して、静的IPアドレスを割り当てます。これにより、VM専用ネットワーク上での通信が可能になります。

MACアドレスは、仮想マシン詳細画面でも確認できるため、VM内のMACアドレスと照合することで、正確にNICを識別できます。

(参考)VLANタグ付きネットワークのアクセス

OCP-Virtでは、VM専用ネットワークを構成する際に、VLANタグ付きネットワークへの接続も可能です。

代表的な構成方法は以下の2通りです。

項目 方法①:VLANブリッジフィルタリング

方法②:VLANインターフェース+ブリッジ

構成要素

1つのLinux bridgeに複数のVLANをフィルタリングして接続

VLANごとに専用のインターフェースとブリッジを作成

 物理NICとの関係

1つの物理NICに対して1つのブリッジ 物理NICに対してVLANインターフェース(例:eth0.100)を複数作成
 NADでのVLAN指定 必要(仮想NICにタグを付与) 不要(物理的にタグ付きインターフェースに接続)
 NNCP設定内容

‐bridgeの作成

‐vlanFiltering:trueの指定

‐interfaceに物理NICを指定

‐VLANインターフェース(例:eth0.100)の作成

‐各VLANインターフェースに対するbridgeの作成

‐interfacesにVLANインターフェースも指定

 NAD設定内容

‐vlanセクションでVLAN IDを指定

‐bridge名を指定

‐bridge名のみ指定(VLAN IDの指定は不要)
 NNCPのGUI設定対応可否

不可(YAMLでのみ設定可能)

※GUIではvlanFilteringやinterfacesの詳細設定は不可

不可(YAMLでのみ設定可能)

※GUIではVLANインターフェースの作成やブリッジの紐づけは不可

まとめ

OpenShift Virtualizationを使えば、コンテナと仮想マシンを同じ環境で動かせるだけでなく、VM専用ネットワークやVLANによる分離も柔軟に構成できます。

従来の仮想化環境からのステップアップや、クラウドネイティブな運用を目指す方にもぴったりの仕組みです。

「仮想化ってOpenShiftでもできるんだ!」という気づきのきっかけになれば嬉しいです。

ぜひこの機会に、OpenShift上での仮想化を気軽に試してみてください!

担当者紹介

担当者 立古

担当者 立古

サーバ構築の経験をベースに、昨年よりコンテナ技術を学習し、案件に参画しています。

保有資格
  • Certified Kubernetes Administrator

  • Certified Kubernetes Application Developer

xポスト ブックマークブックマーク lineLINE
一覧へ戻る

関連する記事

CONTACT

ご相談・お問い合わせ

NebulaShift®は、
柔軟でスピーディなアジャイル開発、システムの刷新、
そして先進的なインフラ運用を通じて、
貴社の可能性を無限に広げます。