8.3. CLI を使用した仮想マシンの作成
8.3.1. CLI からの仮想マシンの作成 リンクのコピーリンクがクリップボードにコピーされました!
VirtualMachine
マニフェストを編集または作成することで、コマンドラインから仮想マシン (VM) を作成できます。仮想マシンマニフェストで インスタンスタイプ を使用すると、仮想マシン設定を簡素化できます。
Web コンソールを使用してインスタンスタイプから仮想マシンを作成 することもできます。
8.3.1.1. VirtualMachine マニフェストからの仮想マシンの作成 リンクのコピーリンクがクリップボードにコピーされました!
VirtualMachine
マニフェストから仮想マシンを作成できます。これらのマニフェストの作成を簡素化するには、virtctl
コマンドラインツールを使用できます。
前提条件
-
virtctl
CLI がインストールされている。 -
OpenShift CLI (
oc
) がインストールされている。
手順
仮想マシンの
VirtualMachine
マニフェストを作成し、YAML ファイルとして保存します。たとえば、最小限の Red Hat Enterprise Linux (RHEL) 仮想マシンを作成するには、次のコマンドを実行します。virtctl create vm --name rhel-9-minimal --volume-import type:ds,src:openshift-virtualization-os-images/rhel9
$ virtctl create vm --name rhel-9-minimal --volume-import type:ds,src:openshift-virtualization-os-images/rhel9
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 仮想マシンの
VirtualMachine
マニフェストを確認します。注記このサンプルマニフェストでは、仮想マシン認証は設定されません。
RHEL 仮想マシンのマニフェストの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow マニフェストファイルを使用して仮想マシンを作成します。
oc create -f <vm_manifest_file>.yaml
$ oc create -f <vm_manifest_file>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 仮想マシンを起動します。
virtctl start <vm_name>
$ virtctl start <vm_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
8.3.2. コンテナーディスクを使用した仮想マシンの作成 リンクのコピーリンクがクリップボードにコピーされました!
オペレーティングシステムイメージから構築されたコンテナーディスクを使用して、仮想マシンを作成できます。
コンテナーディスクの自動更新を有効にすることができます。詳細は、ブートソースの自動更新の管理 を参照してください。
コンテナーディスクが大きい場合は、I/O トラフィックが増加し、ワーカーノードが使用できなくなる可能性があります。この問題を解決するには、次のタスクを実行できます。
次の手順を実行して、コンテナーディスクから仮想マシンを作成します。
- オペレーティングシステムイメージをコンテナーディスクに構築し、それをコンテナーレジストリーにアップロードします。
- コンテナーレジストリーに TLS がない場合は、レジストリーの TLS を無効にするように環境を設定します。
- Web コンソール または コマンドライン を使用して、コンテナーディスクをディスクソースとして使用する仮想マシンを作成します。
Red Hat が提供していないオペレーティングシステムイメージから作成された仮想マシンには、QEMU ゲストエージェント をインストールする必要があります。
8.3.2.1. コンテナーディスクの構築とアップロード リンクのコピーリンクがクリップボードにコピーされました!
仮想マシンイメージをコンテナーディスクに構築し、レジストリーにアップロードできます。
コンテナーディスクのサイズは、コンテナーディスクがホストされているレジストリーの最大レイヤーサイズによって制限されます。
Red Hat Quay の場合、Red Hat Quay の初回デプロイ時に作成される YAML 設定ファイルを編集して、最大レイヤーサイズを変更できます。
前提条件
-
podman
がインストールされている必要があります。 - QCOW2 または RAW イメージファイルが必要です。
手順
Dockerfile を作成して、仮想マシンイメージをコンテナーイメージにビルドします。仮想マシンイメージは、UID
107
を持つ QEMU によって所有され、コンテナー内の/disk/
ディレクトリーに配置される必要があります。次に、/disk/
ディレクトリーのパーミッションは0440
に設定する必要があります。以下の例では、Red Hat Universal Base Image (UBI) を使用して最初の段階でこれらの設定変更を処理し、2 番目の段階で最小の
scratch
イメージを使用して結果を保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<vm_image>
は、QCOW2 または RAW 形式のイメージです。リモートイメージを使用する場合は、<vm_image>.qcow2
を完全な URL に置き換えます。
コンテナーをビルドし、これにタグ付けします。
podman build -t <registry>/<container_disk_name>:latest .
$ podman build -t <registry>/<container_disk_name>:latest .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーイメージをレジストリーにプッシュします。
podman push <registry>/<container_disk_name>:latest
$ podman push <registry>/<container_disk_name>:latest
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.3.2.2. コンテナーレジストリーの TLS を無効にする リンクのコピーリンクがクリップボードにコピーされました!
HyperConverged
カスタムリソースの insecureRegistries
フィールドを編集して、1 つ以上のコンテナーレジストリーの TLS(トランスポート層セキュリティー) を無効にできます。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。
手順
以下のコマンドを実行して、デフォルトのエディターで
HyperConverged
CR を開きます。oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow セキュアでないレジストリーのリストを
spec.storageImport.insecureRegistries
フィールドに追加します。HyperConverged
カスタムリソースの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- このリストのサンプルを、有効なレジストリーホスト名に置き換えます。
8.3.2.3. Web コンソールを使用してコンテナーディスクから仮想マシンを作成する リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソールを使用してコンテナーレジストリーからコンテナーディスクをインポートすることで、仮想マシンを作成できます。
手順
-
Web コンソールで Virtualization
Catalog に移動します。 - 使用可能なブートソースのないテンプレートタイルをクリックします。
- Customize VirtualMachine をクリックします。
- Customize template parameters ページで、Storage を展開し、Disk source リストから Registry (creates PVC) を選択します。
-
コンテナーイメージの URL を入力します。例:
https://mirror.arizona.edu/fedora/linux/releases/38/Cloud/x86_64/images/Fedora-Cloud-Base-38-1.6.x86_64.qcow2
- ディスクサイズを設定します。
- Next をクリックします。
- Create VirtualMachine をクリックします。
8.3.2.4. CLI を使用してコンテナーディスクから仮想マシンを作成する リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインを使用して、コンテナーディスクから仮想マシンを作成できます。
前提条件
- コンテナーディスクを含むコンテナーレジストリーへのアクセス認証情報が必要です。
-
virtctl
CLI がインストールされている。 -
OpenShift CLI (
oc
) がインストールされている。
手順
仮想マシンの
VirtualMachine
マニフェストを作成し、YAML ファイルとして保存します。たとえば、コンテナーディスクから最小限の Red Hat Enterprise Linux (RHEL) 仮想マシンを作成するには、次のコマンドを実行します。virtctl create vm --name vm-rhel-9 --instancetype u1.small --preference rhel.9 --volume-containerdisk src:registry.redhat.io/rhel9/rhel-guest-image:9.5
$ virtctl create vm --name vm-rhel-9 --instancetype u1.small --preference rhel.9 --volume-containerdisk src:registry.redhat.io/rhel9/rhel-guest-image:9.5
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 仮想マシンの
VirtualMachine
マニフェストを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して VM を作成します。
oc create -f <vm_manifest_file>.yaml
$ oc create -f <vm_manifest_file>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
仮想マシンのステータスを監視します。
oc get vm <vm_name>
$ oc get vm <vm_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロビジョニングが成功すると、仮想マシンのステータスが
Running
になります。出力例
NAME AGE STATUS READY vm-rhel-9 18s Running True
NAME AGE STATUS READY vm-rhel-9 18s Running True
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロビジョニングが完了し、シリアルコンソールにアクセスして仮想マシンが起動したことを確認します。
virtctl console <vm_name>
$ virtctl console <vm_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 仮想マシンが実行中でシリアルコンソールにアクセスできる場合、出力は次のようになります。
出力例
Successfully connected to vm-rhel-9 console. The escape sequence is ^]
Successfully connected to vm-rhel-9 console. The escape sequence is ^]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.3.3. PVC のクローン作成による仮想マシンの作成 リンクのコピーリンクがクリップボードにコピーされました!
カスタムイメージを使用して既存の永続ボリューム要求 (PVC) のクローンを作成することで、仮想マシンを作成できます。
Red Hat が提供していないオペレーティングシステムイメージから作成された仮想マシンには、QEMU ゲストエージェント をインストールする必要があります。
PVC のクローンを作成するには、ソース PVC を参照するデータボリュームを作成します。
8.3.3.1. クローン作成について リンクのコピーリンクがクリップボードにコピーされました!
データボリュームのクローンを作成する場合、Containerized Data Importer (CDI) は、次の Container Storage Interface (CSI) クローンメソッドのいずれかを選択します。
- CSI ボリュームのクローン作成
- スマートクローン作成
CSI ボリュームのクローン作成方法とスマートクローン作成方法はどちらも効率的ですが、使用するには特定の要件があります。要件が満たされていない場合、CDI はホスト支援型クローン作成を使用します。ホスト支援型クローン作成は、最も時間がかかり、最も効率の悪いクローン作成方法ですが、他の 2 つのクローン作成方法よりも要件の数が少ないです。
8.3.3.1.1. CSI ボリュームのクローン作成 リンクのコピーリンクがクリップボードにコピーされました!
Container Storage Interface (CSI) のクローン作成では、CSI ドライバー機能を使用して、ソースデータボリュームのクローンをより効率的に作成します。
CSI ボリュームのクローン作成には次の要件があります。
- 永続ボリューム要求 (PVC) のストレージクラスをサポートする CSI ドライバーは、ボリュームのクローン作成をサポートする必要があります。
-
CDI によって認識されないプロビジョナーの場合、対応するストレージプロファイルの
cloneStrategy
が CSI Volume Cloning に設定されている必要があります。 - ソース PVC とターゲット PVC は、同じストレージクラスとボリュームモードを持つ必要があります。
-
データボリュームを作成する場合は、ソース namespace に
datavolumes/source
リソースを作成するパーミッションが必要です。 - ソースボリュームは使用されていない状態である必要があります。
8.3.3.1.2. スマートクローン作成 リンクのコピーリンクがクリップボードにコピーされました!
スナップショット機能を備えた Container Storage Interface (CSI) プラグインが使用可能な場合、Containerized Data Importer (CDI) はスナップショットから永続ボリューム要求 (PVC) を作成し、これにより、追加の PVC の効率的なクローン作成を可能にします。
スマートクローン作成には次の要件があります。
- ストレージクラスに関連付けられたスナップショットクラスが存在する必要があります。
- ソース PVC とターゲット PVC は、同じストレージクラスとボリュームモードを持つ必要があります。
-
データボリュームを作成する場合は、ソース namespace に
datavolumes/source
リソースを作成するパーミッションが必要です。 - ソースボリュームは使用されていない状態である必要があります。
8.3.3.1.3. ホスト支援型クローン作成 リンクのコピーリンクがクリップボードにコピーされました!
Container Storage Interface (CSI) ボリュームのクローン作成もスマートクローン作成の要件も満たされていない場合、ホスト支援型クローン作成がフォールバック方法として使用されます。ホスト支援型クローン作成は、他の 2 つのクローン作成方法と比べると効率が悪いです。
ホスト支援型クローン作成では、ソース Pod とターゲット Pod を使用して、ソースボリュームからターゲットボリュームにデータをコピーします。ターゲットの永続ボリューム要求 (PVC) には、ホスト支援型クローン作成が使用された理由を説明するフォールバック理由のアノテーションが付けられ、イベントが作成されます。
PVC ターゲットアノテーションの例
イベント例
NAMESPACE LAST SEEN TYPE REASON OBJECT MESSAGE test-ns 0s Warning IncompatibleVolumeModes persistentvolumeclaim/test-target The volume modes of source and target are incompatible
NAMESPACE LAST SEEN TYPE REASON OBJECT MESSAGE
test-ns 0s Warning IncompatibleVolumeModes persistentvolumeclaim/test-target The volume modes of source and target are incompatible
8.3.3.2. Web コンソールを使用した PVC からの仮想マシンの作成 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソールを使用して永続ボリューム要求 (PVC) のクローンを作成することにより、仮想マシンを作成できます。
前提条件
- ソース PVC を含む namespace にアクセスできる。
手順
-
Web コンソールで Virtualization
Catalog に移動します。 - 使用可能なブートソースのないテンプレートタイルをクリックします。
- Customize VirtualMachine をクリックします。
- テンプレートパラメーターのカスタマイズ ページで、Storage を展開し、Disk source リストから PVC (clone PVC) を選択します。
- PVC プロジェクトと PVC 名を選択します。
- ディスクサイズを設定します。
- Next をクリックします。
- Create VirtualMachine をクリックします。
8.3.3.3. CLI を使用して PVC から仮想マシンを作成する リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインを使用して既存の仮想マシンの永続ボリューム要求 (PVC) のクローンを作成することで、仮想マシンを作成できます。
次のオプションのいずれかを使用して、PVC のクローンを作成できます。
PVC を新しいデータボリュームに複製します。
この方法では、ライフサイクルが元の仮想マシンから独立したデータボリュームが作成されます。元の仮想マシンを削除しても、新しいデータボリュームやそれに関連付けられた PVC には影響しません。
dataVolumeTemplates
スタンザを含むVirtualMachine
マニフェストを作成して、PVC を複製します。この方法では、ライフサイクルが元の仮想マシンに依存するデータボリュームが作成されます。元の仮想マシンを削除すると、クローン作成されたデータボリュームとそれに関連付けられた PVC も削除されます。
8.3.3.3.1. OpenShift Data Foundation における大規模なクローンパフォーマンスの最適化 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Data Foundation を使用する場合、ストレージプロファイルはデフォルトのクローン作成ストラテジーを csi-clone
として設定します。ただし、次のリンクに示すように、この方法には制限があります。永続ボリューム要求 (PVC) から一定数のクローンが作成されると、バックグラウンドでフラット化プロセスが開始され、大規模なクローン作成のパフォーマンスが大幅に低下する可能性があります。
単一のソース PVC から数百のクローンを作成する際のパフォーマンスを高めるためには、デフォルトの csi-clone
ストラテジーの代わりに VolumeSnapshot
クローン作成メソッドを使用します。
手順
次のコンテンツを使用して、ソースイメージの VolumeSnapshot
カスタムリソース (CR) を作成します。
-
VolumeSnapshot
をDataVolume clone
のソースとして参照するためのspec.source.snapshot
スタンザを追加します。
spec: source: snapshot: namespace: golden-ns name: golden-volumesnapshot
spec:
source:
snapshot:
namespace: golden-ns
name: golden-volumesnapshot
8.3.3.3.2. データボリュームへの PVC のクローン作成 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインを使用して、既存の仮想マシンディスクの永続ボリューム要求 (PVC) のクローンをデータボリュームに作成できます。
元のソース PVC を参照するデータボリュームを作成します。新しいデータボリュームのライフサイクルは、元の仮想マシンから独立しています。元の仮想マシンを削除しても、新しいデータボリュームやそれに関連付けられた PVC には影響しません。
異なるボリュームモード間のクローン作成は、ソース PV とターゲット PV が kubevirt
コンテンツタイプに属している限り、ブロック永続ボリューム (PV) からファイルシステム PV へのクローン作成など、ホスト支援型クローン作成でサポートされます。
スマートクローン作成は、スナップショットを使用して PVC のクローンを作成するため、ホスト支援型クローン作成よりも高速かつ効率的です。スマートクローン作成は、Red Hat OpenShift Data Foundation など、スナップショットをサポートするストレージプロバイダーによってサポートされています。
異なるボリュームモード間のクローン作成は、スマートクローン作成ではサポートされていません。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 - ソース PVC を含む仮想マシンの電源をオフにする必要があります。
- PVC を別の namespace に複製する場合は、ターゲットの namespace にリソースを作成するパーミッションが必要です。
スマートクローン作成の追加の前提条件:
- ストレージプロバイダーはスナップショットをサポートする必要がある。
- ソース PVC とターゲット PVC には、同じストレージプロバイダーとボリュームモードがある必要があります。
次の例に示すように、
VolumeSnapshotClass
オブジェクトのdriver
キーの値は、StorageClass
オブジェクトのprovisioner
キーの値と一致する必要があります。VolumeSnapshotClass
オブジェクトの例kind: VolumeSnapshotClass apiVersion: snapshot.storage.k8s.io/v1 driver: openshift-storage.rbd.csi.ceph.com # ...
kind: VolumeSnapshotClass apiVersion: snapshot.storage.k8s.io/v1 driver: openshift-storage.rbd.csi.ceph.com # ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow StorageClass
オブジェクトの例kind: StorageClass apiVersion: storage.k8s.io/v1 # ... provisioner: openshift-storage.rbd.csi.ceph.com
kind: StorageClass apiVersion: storage.k8s.io/v1 # ... provisioner: openshift-storage.rbd.csi.ceph.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
手順
次の例に示すように、
DataVolume
マニフェストを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行してデータボリュームを作成します。
oc create -f <datavolume>.yaml
$ oc create -f <datavolume>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記データ量により、PVC が準備される前に仮想マシンが起動できなくなります。PVC のクローン作成中に、新しいデータボリュームを参照する仮想マシンを作成できます。
8.3.3.3.3. データボリュームテンプレートを使用したクローン PVC からの仮想マシンの作成 リンクのコピーリンクがクリップボードにコピーされました!
データボリュームテンプレートを使用して、既存の仮想マシンの永続ボリューム要求 (PVC) のクローンを作成する仮想マシンを作成できます。この方法では、ライフサイクルが元の仮想マシンから独立したデータボリュームが作成されます。
前提条件
- ソース PVC を含む仮想マシンの電源をオフにする必要があります。
-
virtctl
CLI がインストールされている。 -
OpenShift CLI (
oc
) がインストールされている。
手順
仮想マシンの
VirtualMachine
マニフェストを作成し、YAML ファイルとして保存します。次に例を示します。virtctl create vm --name rhel-9-clone --volume-import type:pvc,src:my-project/imported-volume-q5pr9
$ virtctl create vm --name rhel-9-clone --volume-import type:pvc,src:my-project/imported-volume-q5pr9
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 仮想マシンの
VirtualMachine
マニフェストを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow PVC のクローンが作成されたデータボリュームで仮想マシンを作成します。
oc create -f <vm_manifest_file>.yaml
$ oc create -f <vm_manifest_file>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow