第7章 仮想マシン
7.1. Red Hat イメージからの仮想マシンの作成
7.1.1. Red Hat イメージからの仮想マシン作成の概要
Red Hat イメージは ゴールデンイメージ です。これらは、安全なレジストリー内のコンテナーディスクとして公開されます。Containerized Data Importer (CDI) は、コンテナーディスクをポーリングしてクラスターにインポートし、スナップショットまたは永続ボリュームクレーム (PVC) として openshift-virtualization-os-images
プロジェクトに保存します。
Red Hat イメージは自動的に更新されます。これらのイメージの自動更新を無効にして再度有効にすることができます。Red Hat ブートソースの更新の管理 を参照してください。
クラスター管理者は、OpenShift Virtualization Web コンソール で Red Hat Enterprise Linux (RHEL) 仮想マシンの自動サブスクリプションを有効にできるようになりました。
次のいずれかの方法を使用して、Red Hat が提供するオペレーティングシステムイメージから仮想マシンを作成できます。
デフォルトの openshift-*
namespace に仮想マシンを作成しないでください。代わりに、openshift
接頭辞なしの新規 namespace を作成するか、既存 namespace を使用します。
7.1.1.1. ゴールデンイメージについて
ゴールデンイメージは、新しい仮想マシンをデプロイメントするためのリソースとして使用できる、仮想マシンの事前設定されたスナップショットです。たとえば、ゴールデンイメージを使用すると、同じシステム環境を一貫してプロビジョニングし、システムをより迅速かつ効率的にデプロイメントできます。
7.1.1.1.1. ゴールデンイメージはどのように機能しますか?
ゴールデンイメージは、リファレンスマシンまたは仮想マシンにオペレーティングシステムとソフトウェアアプリケーションをインストールして設定することによって作成されます。これには、システムのセットアップ、必要なドライバーのインストール、パッチと更新の適用、特定のオプションと環境設定の設定が含まれます。
ゴールデンイメージは、作成後、複数のクラスターに複製してデプロイできるテンプレートまたはイメージファイルとして保存されます。ゴールデンイメージは、メンテナーによって定期的に更新されて、必要なソフトウェア更新とパッチが組み込まれるため、イメージが最新かつ安全な状態に保たれ、新しく作成された仮想マシンはこの更新されたイメージに基づいています。
7.1.1.1.2. Red Hat のゴールデンイメージの実装
Red Hat は、Red Hat Enterprise Linux (RHEL) のバージョンのレジストリー内のコンテナーディスクとしてゴールデンイメージを公開します。コンテナーディスクは、コンテナーイメージレジストリーにコンテナーイメージとして保存される仮想マシンイメージです。公開されたイメージは、OpenShift Virtualization のインストール後に、接続されたクラスターで自動的に使用できるようになります。イメージがクラスター内で使用可能になると、仮想マシンの作成に使用できるようになります。
7.1.1.2. 仮想マシンブートソースについて
仮想マシンは、仮想マシン定義と、データボリュームによってバックアップされる 1 つ以上のディスクで構成されます。仮想マシンテンプレートを使用すると、事前定義された仕様を使用して仮想マシンを作成できます。
すべてのテンプレートにはブートソースが必要です。ブートソースは、設定されたドライバーを含む完全に設定されたディスクイメージです。各テンプレートには、ブートソースへのポインターを含む仮想マシン定義が含まれています。各ブートソースには、事前に定義された名前および namespace があります。オペレーティングシステムによっては、ブートソースは自動的に提供されます。これが提供されない場合、管理者はカスタムブートソースを準備する必要があります。
提供されたブートソースは、オペレーティングシステムの最新バージョンに自動的に更新されます。自動更新されるブートソースの場合、永続ボリュームクレーム (PVC) とボリュームスナップショットはクラスターのデフォルトストレージクラスで作成されます。設定後に別のデフォルトストレージクラスを選択した場合は、以前のデフォルトストレージクラスで設定されたクラスター namespace 内の既存のブートソースを削除する必要があります。
7.1.2. インスタンスタイプからの仮想マシンの作成
OpenShift Container Platform Web コンソールまたは CLI を使用して仮想マシンを作成する場合でも、インスタンスタイプを使用することで仮想マシン (仮想マシン) の作成を簡素化できます。
7.1.2.1. インスタンスタイプについて
インスタンスタイプは、新しい仮想マシンに適用するリソースと特性を定義できる再利用可能なオブジェクトです。カスタムインスタンスタイプを定義したり、OpenShift Virtualization のインストール時に含まれるさまざまなインスタンスタイプを使用したりできます。
新しいインスタンスタイプを作成するには、まず手動で、または virtctl
CLI ツールを使用してマニフェストを作成する必要があります。次に、マニフェストをクラスターに適用してインスタンスタイプオブジェクトを作成します。
OpenShift Virtualization は、インスタンスタイプを設定するための 2 つの CRD を提供します。
-
namespace 付きジェクト:
VirtualMachineInstancetype
-
クラスター全体のオブジェクト:
VirtualMachineClusterInstancetype
これらのオブジェクトは同じ VirtualMachineInstancetypeSpec
を使用します。
7.1.2.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.2.1.2. オプション属性
必須の cpu
および memory
属性に加えて、VirtualMachineInstancetypeSpec
に次のオプション属性を含めることができます。
annotations
- 仮想マシンに適用するアノテーションをリスト表示します。
gpus
- パススルー用の vGPU をリスト表示します。
hostDevices
- パススルー用のホストデバイスをリスト表示します。
ioThreadsPolicy
- 専用ディスクアクセスを管理するための IO スレッドポリシーを定義します。
launchSecurity
- セキュア暗号化仮想化 (SEV) を設定します。
nodeSelector
- この仮想マシンがスケジュールされているノードを制御するためのノードセレクターを指定します。
schedulerName
- デフォルトのスケジューラーの代わりに、この仮想マシンに使用するカスタムスケジューラーを定義します。
7.1.2.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.2.3. virtctl ツールを使用したマニフェストの作成
virtctl
CLI ユーティリティーを使用すると、仮想マシン、仮想マシンインスタンスタイプ、および仮想マシン設定のマニフェストの作成を簡素化できます。詳細は、仮想マシンマニフェスト作成コマンド を参照してください。
VirtualMachine
マニフェストがある場合は、コマンドライン から仮想マシンを作成できます。
7.1.2.4. Web コンソールを使用して、インスタンスタイプから仮想マシンを作成します。
OpenShift Container Platform Web コンソールを使用して、インスタンスタイプから仮想マシンを作成できます。Web コンソールを使用して、既存のスナップショットをコピーするか仮想マシンを複製して、仮想マシンを作成することもできます。
手順
-
Web コンソールで、Virtualization
Catalog に移動し、InstanceTypes タブをクリックします。 次のオプションのいずれかを選択します。
起動可能なボリュームを選択します。
注記ブート可能ボリュームテーブルには、
openshift-virtualization-os-images
namespace 内のinstancetype.kubevirt.io/default-preference
ラベルを持つボリュームのみリストされます。- オプション: 星アイコンをクリックして、ブート可能ボリュームをお気に入りとして指定します。星付きのブート可能ボリュームは、ボリュームリストの最初に表示されます。
- Add volume をクリックして新しいボリュームをアップロードするか、既存の永続ボリューム要求 (PVC)、ボリュームスナップショット、またはデータソースを使用します。次に、Save をクリックします。
- インスタンスタイプのタイルをクリックし、ワークロードに適したリソースサイズを選択します。
- 公開 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 をクリックします。
- オプション: View YAML & CLI をクリックして YAML ファイルを表示します。CLI をクリックして CLI コマンドを表示します。YAML ファイルの内容または CLI コマンドをダウンロードまたはコピーすることもできます。
- Create VirtualMachine をクリックします。
仮想マシンの作成後、VirtualMachine details ページでステータスを監視できます。
7.1.3. テンプレートからの仮想マシンの作成
OpenShift Container Platform Web コンソールを使用して、Red Hat テンプレートから仮想マシン (VM) を作成できます。
7.1.3.1. 仮想マシンテンプレートについて
- ブートソース
利用可能なブートソースを持つテンプレートを使用すると、仮想マシンの作成を効率化できます。ブートソースを含むテンプレートには、カスタムラベルがない場合、Available boot source ラベルが付けられます。
ブートソースのないテンプレートには、Boot source required というラベルが付けられます。カスタムイメージからの仮想マシンの作成 を参照してください。
- カスタマイズ
仮想マシンを起動する前に、ディスクソースと仮想マシンパラメーターをカスタマイズできます。
- ディスクソース設定の詳細は、ストレージボリュームタイプ と ストレージフィールド を参照してください。
- 仮想マシン設定の詳細は、Overview、YAML、および Configuration タブのドキュメントを参照してください。
すべてのラベルとアノテーションとともに仮想マシンテンプレートをコピーすると、新しいバージョンの Scheduling、Scale、and Performance (SSP) Operator がデプロイされたときに、そのバージョンのテンプレートが非推奨に指定されます。この指定は削除できます。Web コンソールを使用した仮想マシンテンプレートのカスタマイズ 参照してください。
- シングルノード OpenShift
-
ストレージの動作の違いにより、一部のテンプレートはシングルノード OpenShift と互換性がありません。互換性を確保するには、データボリュームまたはストレージプロファイルを使用するテンプレートまたは仮想マシンに
evictionStrategy
フィールドを設定しないでください。
7.1.3.2. テンプレートから仮想マシンを作成する
OpenShift Container Platform Web コンソールを使用して、使用可能なブートソースを持つテンプレートから仮想マシンを作成できます。
オプション: 仮想マシンを起動する前に、データソース、cloud-init、SSH キーなどのテンプレートまたは仮想マシンパラメーターをカスタマイズできます。
手順
-
Web コンソールで Virtualization
Catalog に移動します。 利用可能なブートソース をクリックして、テンプレートをブートソースでフィルタリングします。
カタログにはデフォルトのテンプレートが表示されます。All Items をクリックして、フィルターに使用できるすべてのテンプレートを表示します。
- テンプレートタイルをクリックして詳細を表示します。
仮想マシンの Quick create VirtualMachine をクリックして、テンプレートから VM を作成します。
オプション: テンプレートまたは仮想マシンパラメーターをカスタマイズします。
- Customize VirtualMachine をクリックします。
- Storage または Optional parameters をデプロイメントして、データソース設定を編集します。
VirtualMachine パラメーターのカスタマイズ をクリックします。
Customize and create VirtualMachine ペインには、Overview、YAML、Scheduling、Environment、Network interfaces、Disks、Scripts、および Metadata タブが表示されます。
- 仮想マシンの起動前に設定する必要があるパラメーター (cloud-init や静的 SSH キーなど) を編集します。
Create VirtualMachine をクリックします。
VirtualMachine details ページには、プロビジョニングステータスが表示されます。
7.1.3.2.1. ストレージボリュームタイプ
型 | 説明 |
---|---|
ephemeral | ネットワークボリュームを読み取り専用のバッキングストアとして使用するローカルの copy-on-write (COW) イメージ。バッキングボリュームは PersistentVolumeClaim である必要があります。一時イメージは仮想マシンの起動時に作成され、すべての書き込みをローカルに保存します。一時イメージは、仮想マシンの停止、再起動または削除時に破棄されます。バッキングボリューム (PVC) はいずれの方法でも変更されません。 |
persistentVolumeClaim | 利用可能な PV を仮想マシンに割り当てます。PV の割り当てにより、仮想マシンデータのセッション間での永続化が可能になります。 CDI を使用して既存の仮想マシンディスクを PVC にインポートし、PVC を仮想マシンインスタンスに割り当てる方法は、既存の仮想マシンを OpenShift Container Platform にインポートするための推奨される方法です。ディスクを PVC 内で使用できるようにするためのいくつかの要件があります。 |
dataVolume |
データボリュームは、インポート、クローンまたはアップロード操作で仮想マシンディスクの準備プロセスを管理することによって
|
cloudInitNoCloud | 参照される cloud-init NoCloud データソースが含まれるディスクを割り当て、ユーザーデータおよびメタデータを仮想マシンに提供します。cloud-init インストールは仮想マシンディスク内で必要になります。 |
containerDisk | コンテナーイメージレジストリーに保存される、仮想マシンディスクなどのイメージを参照します。イメージはレジストリーからプルされ、仮想マシンの起動時にディスクとして仮想マシンに割り当てられます。
RAW および QCOW2 形式のみがコンテナーイメージレジストリーのサポートされるディスクタイプです。QCOW2 は、縮小されたイメージサイズの場合に推奨されます。 注記
|
emptyDisk | 仮想マシンインターフェイスのライフサイクルに関連付けられるスパースの QCOW2 ディスクを追加で作成します。データは仮想マシンのゲストによって実行される再起動後も存続しますが、仮想マシンが Web コンソールから停止または再起動する場合には破棄されます。空のディスクは、アプリケーションの依存関係および一時ディスクの一時ファイルシステムの制限を上回るデータを保存するために使用されます。 ディスク 容量 サイズも指定する必要があります。 |
7.1.3.2.2. ストレージフィールド
フィールド | 説明 |
---|---|
空白 (PVC の作成) | 空のディスクを作成します。 |
URL を使用したインポート (PVC の作成) | URL (HTTP または HTTPS エンドポイント) を介してコンテンツをインポートします。 |
既存 PVC の使用 | クラスターですでに利用可能な PVC を使用します。 |
既存の PVC のクローン作成 (PVC の作成) | クラスターで利用可能な既存の PVC を選択し、このクローンを作成します。 |
レジストリーを使用したインポート (PVC の作成) | コンテナーレジストリーを使用してコンテンツをインポートします。 |
コンテナー (一時的) | クラスターからアクセスできるレジストリーにあるコンテナーからコンテンツをアップロードします。コンテナーディスクは、CD-ROM や一時的な仮想マシンなどの読み取り専用ファイルシステムにのみ使用する必要があります。 |
Name |
ディスクの名前。この名前には、小文字 ( |
Size | ディスクのサイズ (GiB 単位)。 |
型 | ディスクのタイプ。例: Disk または CD-ROM |
Interface | ディスクデバイスのタイプ。サポートされるインターフェイスは、virtIO、SATA、および SCSI です。 |
Storage Class | ディスクの作成に使用されるストレージクラス。 |
ストレージの詳細設定
以下のストレージの詳細設定はオプションであり、Blank、Import via URL、および Clone existing PVC ディスクで利用できます。
これらのパラメーターを指定しない場合、システムはデフォルトのストレージプロファイル値を使用します。
パラメーター | オプション | パラメーターの説明 |
---|---|---|
ボリュームモード | Filesystem | ファイルシステムベースのボリュームで仮想ディスクを保存します。 |
Block |
ブロックボリュームで仮想ディスクを直接保存します。基礎となるストレージがサポートしている場合は、 | |
アクセスモード | ReadWriteOnce (RWO) | ボリュームはシングルノードで読み取り/書き込みとしてマウントできます。 |
ReadWriteMany (RWX) | ボリュームは、一度に多くのノードで読み取り/書き込みとしてマウントできます。 注記 このモードはライブマイグレーションに必要です。 |
7.1.3.2.3. Web コンソールを使用した仮想マシンテンプレートのカスタマイズ
仮想マシンを起動する前に、データソース、cloud-init、SSH キーなど、仮想マシンまたはテンプレートのパラメーターを変更することで、既存の仮想マシン (VM) テンプレートをカスタマイズできます。テンプレートをコピーし、すべてのラベルとアノテーションを含めてテンプレートをカスタマイズすると、新しいバージョンの Scheduling、Scale、and Performance (SSP) Operator がデプロイされたときに、カスタマイズしたテンプレートが非推奨に指定されます。
この非推奨の指定は、カスタマイズしたテンプレートから削除できます。
手順
-
Web コンソールで Virtualization
Templates に移動します。 - 仮想マシンテンプレートのリストから、非推奨とマークされているテンプレートをクリックします。
- Labels の近くにある鉛筆アイコンの横にある Edit をクリックします。
次の 2 つのラベルを削除します。
-
template.kubevirt.io/type: "base"
-
template.kubevirt.io/version: "version"
-
- Save をクリックします。
- 既存の Annotations の数の横にある鉛筆アイコンをクリックします。
次のアノテーションを削除します。
-
template.kubevirt.io/deprecated
-
- Save をクリックします。
7.1.4. コマンドラインからの仮想マシンの作成
VirtualMachine
マニフェストを編集または作成することで、コマンドラインから仮想マシン (VM) を作成できます。仮想マシンマニフェストで インスタンスタイプ を使用すると、仮想マシン設定を簡素化できます。
Web コンソールを使用してインスタンスタイプから仮想マシンを作成する こともできます。
7.1.4.1. virtctl ツールを使用したマニフェストの作成
virtctl
CLI ユーティリティーを使用すると、仮想マシン、仮想マシンインスタンスタイプ、および仮想マシン設定のマニフェストの作成を簡素化できます。詳細は、仮想マシンマニフェスト作成コマンド を参照してください。
7.1.4.2. VirtualMachine マニフェストからの仮想マシンの作成
VirtualMachine
マニフェストから仮想マシンを作成できます。
手順
仮想マシンの
VirtualMachine
マニフェストを編集します。次の例では、Red Hat Enterprise Linux (RHEL) 仮想マシンを設定します。注記このサンプルマニフェストでは、仮想マシン認証は設定されません。
RHEL 仮想マシンのマニフェストの例
apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: name: rhel-9-minimal spec: dataVolumeTemplates: - metadata: name: rhel-9-minimal-volume spec: sourceRef: kind: DataSource name: rhel9 1 namespace: openshift-virtualization-os-images 2 storage: {} instancetype: name: u1.medium 3 preference: name: rhel.9 4 running: true template: spec: domain: devices: {} volumes: - dataVolume: name: rhel-9-minimal-volume name: rootdisk
マニフェストファイルを使用して仮想マシンを作成します。
$ oc create -f <vm_manifest_file>.yaml
オプション: 仮想マシンを起動します。
$ virtctl start <vm_name> -n <namespace>
次のステップ