第8章 仮想マシンの作成
8.1. インスタンスタイプからの仮想マシンの作成 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソールまたは CLI を使用して仮想マシンを作成する場合でも、インスタンスタイプを使用することで仮想マシン (VM) の作成を簡素化できます。
8.1.1. インスタンスタイプについて リンクのコピーリンクがクリップボードにコピーされました!
インスタンスタイプは、新しい仮想マシンに適用するリソースと特性を定義できる再利用可能なオブジェクトです。カスタムインスタンスタイプを定義したり、OpenShift Virtualization のインストール時に含まれるさまざまなインスタンスタイプを使用したりできます。
					新しいインスタンスタイプを作成するには、まず手動で、または virtctl CLI ツールを使用してマニフェストを作成する必要があります。次に、マニフェストをクラスターに適用してインスタンスタイプオブジェクトを作成します。
				
OpenShift Virtualization は、インスタンスタイプを設定するための 2 つの CRD を提供します。
- 
							namespace 付きのオブジェクト: 
VirtualMachineInstancetype - 
							クラスター全体のオブジェクト: 
VirtualMachineClusterInstancetype 
					これらのオブジェクトは同じ VirtualMachineInstancetypeSpec を使用します。
				
8.1.1.1. 必須の属性 リンクのコピーリンクがクリップボードにコピーされました!
						インスタンスタイプを設定するときは、cpu および memory 属性を定義する必要があります。その他の属性はオプションです。
					
インスタンスタイプから仮想マシンを作成する場合は、インスタンスタイプで定義されているパラメーターをオーバーライドすることはできません。
インスタンスタイプには定義された CPU およびメモリー属性が必要であるため、OpenShift Virtualization は、インスタンスタイプから仮想マシンを作成するときに、これらのリソースに対する追加の要求を常に拒否します。
インスタンスタイプマニフェストを手動で作成できます。以下に例を示します。
必須フィールドを含む YAML ファイルの例
						virtctl CLI ユーティリティーを使用してインスタンスタイプマニフェストを作成できます。以下に例を示します。
					
必須フィールドを含む virtctl コマンドの例
virtctl create instancetype --cpu 2 --memory 256Mi
$ virtctl create instancetype --cpu 2 --memory 256Mi
ここでは、以下のようになります。
--cpu <value>- ゲストに割り当てる仮想 CPU の数を指定します。必須。
 --memory <value>- ゲストに割り当てるメモリーの量を指定します。必須。
 
次のコマンドを実行すると、新しいマニフェストからオブジェクトをすぐに作成できます。
virtctl create instancetype --cpu 2 --memory 256Mi | oc apply -f -
$ virtctl create instancetype --cpu 2 --memory 256Mi | oc apply -f -
8.1.1.2. オプション属性 リンクのコピーリンクがクリップボードにコピーされました!
						必須の cpu および memory 属性に加えて、VirtualMachineInstancetypeSpec に次のオプション属性を含めることができます。
					
annotations- 仮想マシンに適用するアノテーションをリスト表示します。
 gpus- パススルー用の仮想 GPU をリスト表示します。
 hostDevices- パススルー用のホストデバイスをリスト表示します。
 ioThreadsPolicy- 専用ディスクアクセスを管理するための IO スレッドポリシーを定義します。
 launchSecurity- セキュア暗号化仮想化 (SEV) を設定します。
 nodeSelector- この仮想マシンがスケジュールされているノードを制御するためのノードセレクターを指定します。
 schedulerName- デフォルトのスケジューラーの代わりに、この仮想マシンに使用するカスタムスケジューラーを定義します。
 
8.1.1.3. コントローラーリビジョン リンクのコピーリンクがクリップボードにコピーされました!
						インスタンスタイプを使用して仮想マシンを作成すると、ControllerRevision オブジェクトにインスタンスタイプオブジェクトのイミュータブルなスナップショットが保持されます。このスナップショットにより、必要なゲスト CPU やメモリーなど、インスタンスタイプオブジェクトで定義されているリソース関連の特性が固定されます。また、仮想マシンのステータスに、ControllerRevision オブジェクトへの参照が含まれます。
					
このスナップショットはバージョン管理に不可欠です。このスナップショットにより、仮想マシンの実行中にその元になったインスタンスタイプオブジェクトが更新されても、仮想マシンの起動時に作成される仮想マシンインスタンスが変更されないことが保証されます。
8.1.2. 定義済みのインスタンスタイプ リンクのコピーリンクがクリップボードにコピーされました!
					OpenShift Virtualization には、common-instancetypes と呼ばれる事前定義されたインスタンスタイプのセットが含まれています。特定のワークロードに特化したものもあれば、ワークロードに依存しないものもあります。
				
					これらのインスタンスタイプリソースは、シリーズ、バージョン、サイズに応じて名前が付けられます。サイズの値は . 区切り文字に続き、範囲は nano から 8xlarge です。
				
| ユースケース | シリーズ | 特徴 | 仮想 CPU とメモリーの比率 | リソースの例 | 
|---|---|---|---|---|
|   ネットワーク  |   N  |  
  |   1:2  |  
  | 
|   過剰コミットメント  |   O  |  
  |   1:4  |  
  | 
|   コンピュート専用  |   CX  |  
  |   1:2  |  
  | 
|   一般的用途  |   U  |  
  |   1:4  |  
  | 
|   メモリー集約型  |   M  |  
  |   1:8  |  
  | 
8.1.3. インスタンスタイプまたは設定の指定 リンクのコピーリンクがクリップボードにコピーされました!
インスタンスタイプまたは優先度、またはその両方を指定して、複数の仮想マシンで再利用するためのワークロードサイジングとランタイム特性を定義できます。
8.1.3.1. フラグを使用したインスタンスタイプと設定の指定 リンクのコピーリンクがクリップボードにコピーされました!
フラグを使用して、インスタンスタイプおよび設定を指定します。
前提条件
- クラスターにインスタンスタイプ、プリファレンス、またはその両方がある。
 
手順
仮想マシンを作成するときにインスタンスタイプを指定するには、
--instancetypeフラグを使用します。設定を指定するには、--preferenceフラグを使用します。次の例には両方のフラグが含まれています。virtctl create vm --instancetype <my_instancetype> --preference <my_preference>
$ virtctl create vm --instancetype <my_instancetype> --preference <my_preference>Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: namespace 付きのインスタンスタイプまたは設定を指定するには、
--instancetypeまたは--preferenceフラグコマンドに渡される値にkindを含めます。namespace 付きのインスタンスタイプまたは設定は、仮想マシンを作成するのと同じ namespace に存在する必要があります。次の例には、namespace 付きインスタンスタイプと namespace 付き設定のフラグが含まれています。virtctl create vm --instancetype virtualmachineinstancetype/<my_instancetype> --preference virtualmachinepreference/<my_preference>
$ virtctl create vm --instancetype virtualmachineinstancetype/<my_instancetype> --preference virtualmachinepreference/<my_preference>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
8.1.3.2. インスタンスタイプまたは設定の推測 リンクのコピーリンクがクリップボードにコピーされました!
						インスタンスタイプの推論、設定、またはその両方がデフォルトで有効になっており、inferFromVolume 属性の inferFromVolumeFailure ポリシーは Ignore に設定されています。ブートボリュームから推測する場合、エラーは無視され、インスタンスタイプと設定が未設定のままで仮想マシンが作成されます。
					
						ただし、フラグが適用されると、inferFromVolumeFailure ポリシーはデフォルトで Reject に設定されます。ブートボリュームから推測する場合、エラーが発生すると、その仮想マシンの作成が拒否されます。
					
						--infer-instancetype フラグと --infer-preference フラグを使用すると、仮想マシンのワークロードのサイズ設定と実行時特性を定義するために使用するインスタンスタイプ、設定、またはその両方を推測できます。
					
前提条件
- 
								
virtctlツールがインストールされている。 
手順
仮想マシンの起動に使用されるボリュームから明示的にインスタンスタイプを推測するには、
--infer-instancetypeフラグを使用します。設定を明示的に推測するには、--infer-preferenceフラグを使用します。次のコマンドには両方のフラグが含まれます。virtctl create vm --volume-import type:pvc,src:my-ns/my-pvc --infer-instancetype --infer-preference
$ virtctl create vm --volume-import type:pvc,src:my-ns/my-pvc --infer-instancetype --infer-preferenceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 仮想マシンのブートに使用されるボリューム以外のボリュームからインスタンスタイプまたは設定を推測するには、
--infer-instancetype-fromおよび--infer-preference-fromフラグを使用して、仮想マシンのボリュームのいずれかを指定します。以下の例では、仮想マシンはvolume-aから起動しますが、volume-bからインスタンスタイプと設定を推測しています。virtctl create vm \ --volume-import=type:pvc,src:my-ns/my-pvc-a,name:volume-a \ --volume-import=type:pvc,src:my-ns/my-pvc-b,name:volume-b \ --infer-instancetype-from volume-b \ --infer-preference-from volume-b
$ virtctl create vm \ --volume-import=type:pvc,src:my-ns/my-pvc-a,name:volume-a \ --volume-import=type:pvc,src:my-ns/my-pvc-b,name:volume-b \ --infer-instancetype-from volume-b \ --infer-preference-from volume-bCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
8.1.3.3. inferFromVolume ラベルの設定 リンクのコピーリンクがクリップボードにコピーされました!
PVC、データソース、またはデータボリュームで次のラベルを使用して、ボリュームから起動するときに使用するインスタンスタイプ、設定、またはその両方を推論メカニズムに指示します。
- 
								クラスター全体のインスタンスのタイプ: 
instancetype.kubevirt.io/default-instancetypeラベル。 - 
								namespace 付きのインスタンスタイプ: 
instancetype.kubevirt.io/default-instancetype-kindラベル。空のままにすると、デフォルトでVirtualMachineClusterInstancetypeラベルになります。 - 
								クラスター全体の設定: 
instancetype.kubevirt.io/default-preferenceラベル。 - 
								namespace 付きの設定: 
instancetype.kubevirt.io/default-preference-kindラベル。空のままにすると、デフォルトでVirtualMachineClusterPreferenceラベルになります。 
前提条件
- クラスターにインスタンスタイプ、プリファレンス、またはその両方がある。
 - 
								OpenShift CLI (
oc) がインストールされている。 
手順
データソースにラベルを適用するには、
oc labelを使用します。次のコマンドは、クラスター全体のインスタンスタイプを指すラベルを適用します。oc label DataSource foo instancetype.kubevirt.io/default-instancetype=<my_instancetype>
$ oc label DataSource foo instancetype.kubevirt.io/default-instancetype=<my_instancetype>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
8.1.4. Web コンソールを使用したインスタンスタイプからの仮想マシンの作成 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソールを使用して、インスタンスタイプから仮想マシンを作成できます。Web コンソールを使用して、既存のスナップショットをコピーするか仮想マシンを複製して、仮想マシンを作成することもできます。
使用可能な起動可能なボリュームのリストから仮想マシンを作成できます。Linux ベースまたは Windows ベースのボリュームをリストに追加できます。
手順
Web コンソールで、Virtualization
Catalog に移動します。 InstanceTypes タブがデフォルトで開きます。
注記仮想マシン設定を使用する IBM Z® システムで downward-metrics デバイスを設定する場合は、
spec.preference.name値をrhel.9.s390xに設定するか、*.s390xという形式の使用可能な別の設定を指定する必要があります。次のオプションのいずれかを選択します。
リストから適切な起動可能なボリュームを選択します。リストが切り捨てられている場合は、Show all ボタンをクリックしてリスト全体を表示します。
注記ブート可能ボリュームテーブルには、
openshift-virtualization-os-imagesnamespace 内のinstancetype.kubevirt.io/default-preferenceラベルを持つボリュームのみリストされます。- オプション: 星アイコンをクリックして、ブート可能ボリュームをお気に入りとして指定します。星付きのブート可能ボリュームは、ボリュームリストの最初に表示されます。
 
新しいボリュームをアップロードするか、既存の永続ボリューム要求 (PVC)、ボリュームスナップショット、または
containerDiskボリュームを使用するには Add volume をクリックします。Save をクリックします。クラスターで使用できないオペレーティングシステムのロゴは、リストの下部に表示されます。Add volume リンクをクリックすると、必要なオペレーティングシステムのボリュームを追加できます。
さらに、Windows の起動可能なボリュームを作成する クイックスタートへのリンクもあります。Select volume to boot from の横にある疑問符アイコンの上にポインターを置くと、ポップオーバーに同じリンクが表示されます。
環境をインストールした直後、または環境が切断された直後は、起動元のボリュームのリストは空になります。その場合、Windows、RHEL、Linux の 3 つのオペレーティングシステムのロゴが表示されます。Add volume ボタンをクリックすると、要件を満たす新しいボリュームを追加できます。
- インスタンスタイプのタイルをクリックし、ワークロードに適したリソースサイズを選択します。
 オプション: 起動元のボリュームに適用される仮想マシンの詳細 (仮想マシンの名前を含む) を選択します。
Linux ベースのボリュームの場合は、次の手順に従って SSH を設定します。
- プロジェクトに SSH 公開鍵をまだ追加していない場合は、VirtualMachine details セクションの Authorized SSH key の横にある編集アイコンをクリックします。
 以下のオプションのいずれかを選択します。
- Use existing: シークレットリストからシークレットを選択します。
 Add new: 以下の手順に従ってください。
- SSH 公開鍵ファイルを参照するか、ファイルを鍵のフィールドに貼り付けます。
 - シークレット名を入力します。
 - オプション: Automatically apply this key to any new VirtualMachine you create in this project を選択します。
 
- Save をクリックします。
 
Windows ボリュームの場合は、次のいずれかの手順に従って sysprep オプションを設定します。
Windows ボリュームに sysprep オプションをまだ追加していない場合は、次の手順に従います。
- VirtualMachine details セクションの Sysprep の横にある編集アイコンをクリックします。
 - Autoattend.xml アンサーファイルを追加します。
 - Unattend.xml アンサーファイルを追加します。
 - Save をクリックします。
 
Windows ボリュームに既存の sysprep オプションを使用する場合は、次の手順に従います。
- 既存の sysprep を添付 をクリックします。
 - 既存の sysprep Unattend.xml アンサーファイルの名前を入力します。
 - Save をクリックします。
 
オプション: Windows 仮想マシンを作成する場合は、Windows ドライバーディスクをマウントできます。
- Customize VirtualMachine ボタンをクリックします。
 - VirtualMachine details ページで、Storage をクリックします。
 - Mount Windows drivers disk チェックボックスを選択します。
 
- オプション: View YAML & CLI をクリックして YAML ファイルを表示します。CLI をクリックして CLI コマンドを表示します。YAML ファイルの内容または CLI コマンドをダウンロードまたはコピーすることもできます。
 - Create VirtualMachine をクリックします。
 
仮想マシンの作成後、VirtualMachine details ページでステータスを監視できます。
8.1.5. 仮想マシンのインスタンスタイプの変更 リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者または仮想マシン所有者は、次の理由により、既存の仮想マシンのインスタンスタイプを変更する必要がある場合があります。
- 仮想マシンのワークロードが増加した場合、パフォーマンスのボトルネックを防ぐために、インスタンスタイプを、より多くの CPU、より多くのメモリー、または特定のハードウェアリソースを備えたインスタンスタイプに変更することがあります。
 - 特殊なワークロードを使用している場合、パフォーマンス向上のために、別のインスタンスタイプに切り替えることがあります。一部のインスタンスタイプは、特定のユースケース向けに最適化されているためです。
 
					既存の仮想マシンのインスタンスタイプは、OpenShift Container Platform Web コンソールまたは OpenShift CLI (oc) を使用して変更できます。
				
8.1.5.1. Web コンソールを使用して仮想マシンのインスタンスタイプを変更する リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールを使用して、実行中の仮想マシン (VM) に関連付けられているインスタンスタイプを変更できます。変更は即座に有効になります。
前提条件
- インスタンスタイプを使用して仮想マシンを作成している。
 
手順
- 
								OpenShift Container Platform コンソールで、Virtualization 
VirtualMachines をクリックします。  - 仮想マシンを選択して、VirtualMachine details ページを開きます。
 - Configuration タブをクリックします。
 - Details タブで、インスタンスタイプテキストをクリックして Edit Instancetype ダイアログを開きます。たとえば、1 CPU | 2 GiB Memory をクリックします。
 Series および Size リストを使用して、インスタンスタイプを編集します。
- Series リストからアイテムを選択して、そのシリーズに関連するサイズを表示します。たとえば、General Purpose を選択します。
 - Size リストから仮想マシンの新しいインスタンスタイプを選択します。たとえば、medium: 1 CPUs, 4Gi Memory を選択します。これは、General Purpose シリーズで利用できます。
 
- Save をクリックします。
 
検証
- YAML タブをクリックします。
 - Reload をクリックします。
 - 仮想マシン YAML を確認し、インスタンスタイプが変更されたことを確認します。
 
8.1.5.2. CLI を使用して仮想マシンのインスタンスタイプを変更する リンクのコピーリンクがクリップボードにコピーされました!
						仮想マシンのインスタンスタイプを変更するには、仮想マシン仕様の name フィールドを変更します。これにより、更新ロジックがトリガーされ、新しいリソース設定の新しいイミュータブルなコントローラーリビジョンのスナップショットが確実に作成されます。
					
前提条件
- 
								OpenShift CLI (
oc) がインストールされている。 - インスタンスタイプを使用して仮想マシンを作成したか、変更する仮想マシンに対する管理者特権を持っている。
 
手順
- 仮想マシンを停止します。
 次のコマンドを実行します。
<vm_name>は、仮想マシンの名前に置き換えます。<new_instancetype>は、変更後のインスタンスタイプの名前に置き換えます。oc patch vm/<vm_name> --type merge -p '{"spec":{"instancetype":{"name": "<new_instancetype>"}}}'$ oc patch vm/<vm_name> --type merge -p '{"spec":{"instancetype":{"name": "<new_instancetype>"}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
検証
更新された仮想マシンの
statusフィールドでコントローラーリビジョンの参照を確認します。次のコマンドを実行し、出力でリビジョン名が更新されていることを確認します。oc get vms/<vm_name> -o json | jq .status.instancetypeRef
$ oc get vms/<vm_name> -o json | jq .status.instancetypeRefCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 仮想マシンインスタンスが最新のコントローラーリビジョンで定義された新しい設定を実行していることを確認します。たとえば、インスタンスタイプを 1 個ではなく 2 個の仮想 CPU を使用するように更新した場合は、次のコマンドを実行して出力を確認します。
oc get vmi/<vm_name> -o json | jq .spec.domain.cpu
$ oc get vmi/<vm_name> -o json | jq .spec.domain.cpuCopy to Clipboard Copied! Toggle word wrap Toggle overflow リビジョンが 2 個の仮想 CPU を使用していることを示す出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow