第7章 仮想マシンの作成
7.1. インスタンスタイプからの仮想マシンの作成
OpenShift Container Platform Web コンソールまたは CLI を使用して仮想マシンを作成する場合でも、インスタンスタイプを使用することで仮想マシン (仮想マシン) の作成を簡素化できます。
7.1.1. インスタンスタイプについて
インスタンスタイプは、新しい仮想マシンに適用するリソースと特性を定義できる再利用可能なオブジェクトです。カスタムインスタンスタイプを定義したり、OpenShift Virtualization のインストール時に含まれるさまざまなインスタンスタイプを使用したりできます。
新しいインスタンスタイプを作成するには、まず手動で、または virtctl
CLI ツールを使用してマニフェストを作成する必要があります。次に、マニフェストをクラスターに適用してインスタンスタイプオブジェクトを作成します。
OpenShift Virtualization は、インスタンスタイプを設定するための 2 つの CRD を提供します。
-
namespace 付きジェクト:
VirtualMachineInstancetype
-
クラスター全体のオブジェクト:
VirtualMachineClusterInstancetype
これらのオブジェクトは同じ VirtualMachineInstancetypeSpec
を使用します。
7.1.1.1. 必須の属性
インスタンスタイプを設定するときは、cpu
および memory
属性を定義する必要があります。その他の属性はオプションです。
インスタンスタイプから仮想マシンを作成する場合は、インスタンスタイプで定義されているパラメーターをオーバーライドすることはできません。
インスタンスタイプには定義された CPU およびメモリー属性が必要であるため、OpenShift Virtualization は、インスタンスタイプから仮想マシンを作成するときに、これらのリソースに対する追加の要求を常に拒否します。
インスタンスタイプマニフェストを手動で作成できます。以下に例を示します。
必須フィールドを含む YAML ファイルの例
apiVersion: instancetype.kubevirt.io/v1beta1 kind: VirtualMachineInstancetype metadata: name: example-instancetype spec: cpu: guest: 1 1 memory: guest: 128Mi 2
virtctl
CLI ユーティリティーを使用してインスタンスタイプマニフェストを作成できます。以下に例を示します。
必須フィールドを含む virtctl
コマンドの例
$ virtctl create instancetype --cpu 2 --memory 256Mi
ここでは、以下のようになります。
--cpu <value>
- ゲストに割り当てる vCPU の数を指定します。必須。
--memory <value>
- ゲストに割り当てるメモリーの量を指定します。必須。
次のコマンドを実行すると、新しいマニフェストからオブジェクトをすぐに作成できます。
$ virtctl create instancetype --cpu 2 --memory 256Mi | oc apply -f -
7.1.1.2. オプション属性
必須の cpu
および memory
属性に加えて、VirtualMachineInstancetypeSpec
に次のオプション属性を含めることができます。
annotations
- 仮想マシンに適用するアノテーションをリスト表示します。
gpus
- パススルー用の vGPU をリスト表示します。
hostDevices
- パススルー用のホストデバイスをリスト表示します。
ioThreadsPolicy
- 専用ディスクアクセスを管理するための IO スレッドポリシーを定義します。
launchSecurity
- セキュア暗号化仮想化 (SEV) を設定します。
nodeSelector
- この仮想マシンがスケジュールされているノードを制御するためのノードセレクターを指定します。
schedulerName
- デフォルトのスケジューラーの代わりに、この仮想マシンに使用するカスタムスケジューラーを定義します。
7.1.2. 定義済みのインスタンスタイプ
OpenShift Virtualization には、common-instancetypes
と呼ばれる事前定義されたインスタンスタイプのセットが含まれています。特定のワークロードに特化したものもあれば、ワークロードに依存しないものもあります。
これらのインスタンスタイプリソースは、シリーズ、バージョン、サイズに応じて名前が付けられます。サイズの値は .
区切り文字に続き、範囲は nano
から 8xlarge
です。
ユースケース | シリーズ | 特徴 | vCPU とメモリーの比率 | リソースの例 |
---|---|---|---|---|
Universal | U |
| 1:4 |
|
過剰コミットメント | O |
| 1:4 |
|
コンピュート専用 | CX |
| 1:2 |
|
NVIDIA GPU | GN |
| 1:4 |
|
メモリー集約型 | M |
| 1:8 |
|
ネットワーク集約型 | N |
| 1:2 |
|
7.1.3. インスタンスタイプまたは設定の指定
インスタンスタイプまたは優先度、またはその両方を指定して、複数の仮想マシンで再利用するためのワークロードサイジングとランタイム特性を定義できます。
7.1.3.1. フラグを使用したインスタンスタイプと設定の指定
フラグを使用して、インスタンスタイプおよび設定を指定します。
前提条件
- クラスターにインスタンスタイプ、プリファレンス、またはその両方がある。
手順
仮想マシンを作成するときにインスタンスタイプを指定するには、
--instancetype
フラグを使用します。設定を指定するには、--preference
フラグを使用します。次の例には両方のフラグが含まれています。$ virtctl create vm --instancetype <my_instancetype> --preference <my_preference>
オプション: namespace インスタンスタイプまたは設定を指定するには、
--instancetype
または--preference
フラグコマンドに渡される値にkind
を含めます。namespace インスタンスタイプまたは設定は、仮想マシンを作成するのと同じ namespace に存在する必要があります。次の例には、namespace インスタンスタイプと namespace 設定のフラグが含まれています。$ virtctl create vm --instancetype virtualmachineinstancetype/<my_instancetype> --preference virtualmachinepreference/<my_preference>
7.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
仮想マシンのブートに使用されるボリューム以外のボリュームからインスタンスタイプまたは設定を推測するには、
--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
7.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
ラベルになります。
前提条件
- クラスターにインスタンスタイプ、プリファレンス、またはその両方がある。
手順
データソースにラベルを適用するには、
oc label
を使用します。次のコマンドは、クラスター全体のインスタンスタイプを指すラベルを適用します。$ oc label DataSource foo instancetype.kubevirt.io/default-instancetype=<my_instancetype>
7.1.4. Web コンソールを使用して、インスタンスタイプから仮想マシンを作成します。
OpenShift Container Platform Web コンソールを使用して、インスタンスタイプから仮想マシンを作成できます。Web コンソールを使用して、既存のスナップショットをコピーするか仮想マシンを複製して、仮想マシンを作成することもできます。
使用可能な起動可能なボリュームのリストから仮想マシンを作成できます。Linux ベースまたは Windows ベースのボリュームをリストに追加できます。
手順
Web コンソールで、Virtualization
Catalog に移動します。 InstanceTypes タブがデフォルトで開きます。
次のオプションのいずれかを選択します。
リストから適切な起動可能なボリュームを選択します。リストが切り捨てられている場合は、Show all ボタンをクリックしてリスト全体を表示します。
注記ブート可能ボリュームテーブルには、
openshift-virtualization-os-images
namespace 内のinstancetype.kubevirt.io/default-preference
ラベルを持つボリュームのみリストされます。- オプション: 星アイコンをクリックして、ブート可能ボリュームをお気に入りとして指定します。星付きのブート可能ボリュームは、ボリュームリストの最初に表示されます。
新しいボリュームをアップロードするか、既存の永続ボリューム要求 (PVC)、ボリュームスナップショット、または
containerDisk
ボリュームを使用するには Add volume をクリックします。Save をクリックします。クラスターで使用できないオペレーティングシステムのロゴは、リストの下部に表示されます。Add volume リンクをクリックすると、必要なオペレーティングシステムのボリュームを追加できます。
さらに、Create a Windows boot source クイックスタートへのリンクもあります。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 ページでステータスを監視できます。