第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

1
必須。ゲストに割り当てる vCPU の数を指定します。
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 です。

表7.1 common-instancetypes シリーズの比較
ユースケースシリーズ特徴vCPU とメモリーの比率リソースの例

Universal

U

  • バースト可能な CPU パフォーマンス

1:4

u1.medium
  • 仮想 CPU 1 個
  • 4Gi メモリー

過剰コミットメント

O

  • 過剰にコミットされたメモリー
  • バースト可能な CPU パフォーマンス

1:4

o1.small
  • 1 vCPU
  • 2Gi メモリー

コンピュート専用

CX

  • hugepage
  • 専用 CPU
  • 分離されたエミュレータースレッド
  • vNUMA

1:2

cx1.2xlarge
  • 仮想 CPU 8 個
  • 16Gi メモリー

NVIDIA GPU

GN

  • NVIDIA GPU Operator が提供する GPU を使用する仮想マシンの場合
  • 定義済みの GPU がある
  • バースト可能な CPU パフォーマンス

1:4

gn1.8xlarge
  • 仮想 CPU 32 個
  • 128Gi メモリー

メモリー集約型

M

  • hugepage
  • バースト可能な CPU パフォーマンス

1:8

m1.large
  • 仮想 CPU 2 個
  • 16Gi メモリー

ネットワーク集約型

N

  • hugepage
  • 専用 CPU
  • 分離されたエミュレータースレッド
  • DPDK ワークロードを実行できるノードが必要

1:2

n1.medium
  • 仮想 CPU 4 個
  • 4Gi メモリー

7.1.2.3. virtctl ツールを使用したマニフェストの作成

virtctl CLI ユーティリティーを使用すると、仮想マシン、仮想マシンインスタンスタイプ、および仮想マシン設定のマニフェストの作成を簡素化できます。詳細は、仮想マシンマニフェスト作成コマンド を参照してください。

VirtualMachine マニフェストがある場合は、コマンドライン から仮想マシンを作成できます。

7.1.2.4. Web コンソールを使用して、インスタンスタイプから仮想マシンを作成します。

OpenShift Container Platform Web コンソールを使用して、インスタンスタイプから仮想マシンを作成できます。Web コンソールを使用して、既存のスナップショットをコピーするか仮想マシンを複製して、仮想マシンを作成することもできます。

手順

  1. Web コンソールで、Virtualization Catalog に移動し、InstanceTypes タブをクリックします。
  2. 次のオプションのいずれかを選択します。

    • 起動可能なボリュームを選択します。

      注記

      ブート可能ボリュームテーブルには、openshift-virtualization-os-images namespace 内の instancetype.kubevirt.io/default-preference ラベルを持つボリュームのみリストされます。

      • オプション: 星アイコンをクリックして、ブート可能ボリュームをお気に入りとして指定します。星付きのブート可能ボリュームは、ボリュームリストの最初に表示されます。
    • Add volume をクリックして新しいボリュームをアップロードするか、既存の永続ボリューム要求 (PVC)、ボリュームスナップショット、またはデータソースを使用します。次に、Save をクリックします。
  3. インスタンスタイプのタイルをクリックし、ワークロードに適したリソースサイズを選択します。
  4. 公開 SSH キーをまだプロジェクトに追加していない場合は、VirtualMachine details セクションの Authorized SSH key の横にある編集アイコンをクリックします。
  5. 以下のオプションのいずれかを選択します。

    • Use existing: シークレットリストからシークレットを選択します。
    • Add new:

      1. 公開 SSH キーファイルを参照するか、ファイルをキーフィールドに貼り付けます。
      2. シークレット名を入力します。
      3. オプション: Automatically apply this key to any new VirtualMachine you create in this project を選択します。
      4. Save をクリックします。
  6. オプション: View YAML & CLI をクリックして YAML ファイルを表示します。CLI をクリックして CLI コマンドを表示します。YAML ファイルの内容または CLI コマンドをダウンロードまたはコピーすることもできます。
  7. Create VirtualMachine をクリックします。

仮想マシンの作成後、VirtualMachine details ページでステータスを監視できます。

7.1.3. テンプレートからの仮想マシンの作成

OpenShift Container Platform Web コンソールを使用して、Red Hat テンプレートから仮想マシン (VM) を作成できます。

7.1.3.1. 仮想マシンテンプレートについて

ブートソース

利用可能なブートソースを持つテンプレートを使用すると、仮想マシンの作成を効率化できます。ブートソースを含むテンプレートには、カスタムラベルがない場合、Available boot source ラベルが付けられます。

ブートソースのないテンプレートには、Boot source required というラベルが付けられます。カスタムイメージからの仮想マシンの作成 を参照してください。

カスタマイズ

仮想マシンを起動する前に、ディスクソースと仮想マシンパラメーターをカスタマイズできます。

注記

すべてのラベルとアノテーションとともに仮想マシンテンプレートをコピーすると、新しいバージョンの Scheduling、Scale、and Performance (SSP) Operator がデプロイされたときに、そのバージョンのテンプレートが非推奨に指定されます。この指定は削除できます。Web コンソールを使用した仮想マシンテンプレートのカスタマイズ 参照してください。

シングルノード OpenShift
ストレージの動作の違いにより、一部のテンプレートはシングルノード OpenShift と互換性がありません。互換性を確保するには、データボリュームまたはストレージプロファイルを使用するテンプレートまたは仮想マシンに evictionStrategy フィールドを設定しないでください。

7.1.3.2. テンプレートから仮想マシンを作成する

OpenShift Container Platform Web コンソールを使用して、使用可能なブートソースを持つテンプレートから仮想マシンを作成できます。

オプション: 仮想マシンを起動する前に、データソース、cloud-init、SSH キーなどのテンプレートまたは仮想マシンパラメーターをカスタマイズできます。

手順

  1. Web コンソールで Virtualization Catalog に移動します。
  2. 利用可能なブートソース をクリックして、テンプレートをブートソースでフィルタリングします。

    カタログにはデフォルトのテンプレートが表示されます。All Items をクリックして、フィルターに使用できるすべてのテンプレートを表示します。

  3. テンプレートタイルをクリックして詳細を表示します。
  4. 仮想マシンの Quick create VirtualMachine をクリックして、テンプレートから VM を作成します。

    オプション: テンプレートまたは仮想マシンパラメーターをカスタマイズします。

    1. Customize VirtualMachine をクリックします。
    2. Storage または Optional parameters をデプロイメントして、データソース設定を編集します。
    3. VirtualMachine パラメーターのカスタマイズ をクリックします。

      Customize and create VirtualMachine ペインには、OverviewYAMLSchedulingEnvironmentNetwork interfacesDisksScripts、および Metadata タブが表示されます。

    4. 仮想マシンの起動前に設定する必要があるパラメーター (cloud-init や静的 SSH キーなど) を編集します。
    5. Create VirtualMachine をクリックします。

      VirtualMachine details ページには、プロビジョニングステータスが表示されます。

7.1.3.2.1. ストレージボリュームタイプ
表7.2 ストレージボリュームタイプ
説明

ephemeral

ネットワークボリュームを読み取り専用のバッキングストアとして使用するローカルの copy-on-write (COW) イメージ。バッキングボリュームは PersistentVolumeClaim である必要があります。一時イメージは仮想マシンの起動時に作成され、すべての書き込みをローカルに保存します。一時イメージは、仮想マシンの停止、再起動または削除時に破棄されます。バッキングボリューム (PVC) はいずれの方法でも変更されません。

persistentVolumeClaim

利用可能な PV を仮想マシンに割り当てます。PV の割り当てにより、仮想マシンデータのセッション間での永続化が可能になります。

CDI を使用して既存の仮想マシンディスクを PVC にインポートし、PVC を仮想マシンインスタンスに割り当てる方法は、既存の仮想マシンを OpenShift Container Platform にインポートするための推奨される方法です。ディスクを PVC 内で使用できるようにするためのいくつかの要件があります。

dataVolume

データボリュームは、インポート、クローンまたはアップロード操作で仮想マシンディスクの準備プロセスを管理することによって persistentVolumeClaim ディスクタイプにビルドされます。このボリュームタイプを使用する仮想マシンは、ボリュームが準備できるまで起動しないことが保証されます。

type: dataVolume または type: "" を指定します。persistentVolumeClaim などの type に他の値を指定すると、警告が表示され、仮想マシンは起動しません。

cloudInitNoCloud

参照される cloud-init NoCloud データソースが含まれるディスクを割り当て、ユーザーデータおよびメタデータを仮想マシンに提供します。cloud-init インストールは仮想マシンディスク内で必要になります。

containerDisk

コンテナーイメージレジストリーに保存される、仮想マシンディスクなどのイメージを参照します。イメージはレジストリーからプルされ、仮想マシンの起動時にディスクとして仮想マシンに割り当てられます。

containerDisk ボリュームは、単一の仮想マシンに制限されず、永続ストレージを必要としない多数の仮想マシンのクローンを作成するのに役立ちます。

RAW および QCOW2 形式のみがコンテナーイメージレジストリーのサポートされるディスクタイプです。QCOW2 は、縮小されたイメージサイズの場合に推奨されます。

注記

containerDisk ボリュームは一時的なボリュームです。これは、仮想マシンが停止されるか、再起動するか、削除される際に破棄されます。containerDisk ボリュームは、CD-ROM などの読み取り専用ファイルシステムや破棄可能な仮想マシンに役立ちます。

emptyDisk

仮想マシンインターフェイスのライフサイクルに関連付けられるスパースの QCOW2 ディスクを追加で作成します。データは仮想マシンのゲストによって実行される再起動後も存続しますが、仮想マシンが Web コンソールから停止または再起動する場合には破棄されます。空のディスクは、アプリケーションの依存関係および一時ディスクの一時ファイルシステムの制限を上回るデータを保存するために使用されます。

ディスク 容量 サイズも指定する必要があります。

7.1.3.2.2. ストレージフィールド
フィールド説明

空白 (PVC の作成)

空のディスクを作成します。

URL を使用したインポート (PVC の作成)

URL (HTTP または HTTPS エンドポイント) を介してコンテンツをインポートします。

既存 PVC の使用

クラスターですでに利用可能な PVC を使用します。

既存の PVC のクローン作成 (PVC の作成)

クラスターで利用可能な既存の PVC を選択し、このクローンを作成します。

レジストリーを使用したインポート (PVC の作成)

コンテナーレジストリーを使用してコンテンツをインポートします。

コンテナー (一時的)

クラスターからアクセスできるレジストリーにあるコンテナーからコンテンツをアップロードします。コンテナーディスクは、CD-ROM や一時的な仮想マシンなどの読み取り専用ファイルシステムにのみ使用する必要があります。

Name

ディスクの名前。この名前には、小文字 (a-z)、数字 (0-9)、ハイフン (-) およびピリオド (.) を含めることができ、最大 253 文字を使用できます。最初と最後の文字は英数字にする必要があります。この名前には、大文字、スペース、または特殊文字を使用できません。

Size

ディスクのサイズ (GiB 単位)。

ディスクのタイプ。例: Disk または CD-ROM

Interface

ディスクデバイスのタイプ。サポートされるインターフェイスは、virtIOSATA、および SCSI です。

Storage Class

ディスクの作成に使用されるストレージクラス。

ストレージの詳細設定

以下のストレージの詳細設定はオプションであり、BlankImport via URL、および Clone existing PVC ディスクで利用できます。

これらのパラメーターを指定しない場合、システムはデフォルトのストレージプロファイル値を使用します。

パラメーターオプションパラメーターの説明

ボリュームモード

Filesystem

ファイルシステムベースのボリュームで仮想ディスクを保存します。

Block

ブロックボリュームで仮想ディスクを直接保存します。基礎となるストレージがサポートしている場合は、Block を使用します。

アクセスモード

ReadWriteOnce (RWO)

ボリュームはシングルノードで読み取り/書き込みとしてマウントできます。

ReadWriteMany (RWX)

ボリュームは、一度に多くのノードで読み取り/書き込みとしてマウントできます。

注記

このモードはライブマイグレーションに必要です。

7.1.3.2.3. Web コンソールを使用した仮想マシンテンプレートのカスタマイズ

仮想マシンを起動する前に、データソース、cloud-init、SSH キーなど、仮想マシンまたはテンプレートのパラメーターを変更することで、既存の仮想マシン (VM) テンプレートをカスタマイズできます。テンプレートをコピーし、すべてのラベルとアノテーションを含めてテンプレートをカスタマイズすると、新しいバージョンの Scheduling、Scale、and Performance (SSP) Operator がデプロイされたときに、カスタマイズしたテンプレートが非推奨に指定されます。

この非推奨の指定は、カスタマイズしたテンプレートから削除できます。

手順

  1. Web コンソールで Virtualization Templates に移動します。
  2. 仮想マシンテンプレートのリストから、非推奨とマークされているテンプレートをクリックします。
  3. Labels の近くにある鉛筆アイコンの横にある Edit をクリックします。
  4. 次の 2 つのラベルを削除します。

    • template.kubevirt.io/type: "base"
    • template.kubevirt.io/version: "version"
  5. Save をクリックします。
  6. 既存の Annotations の数の横にある鉛筆アイコンをクリックします。
  7. 次のアノテーションを削除します。

    • template.kubevirt.io/deprecated
  8. Save をクリックします。

7.1.4. コマンドラインからの仮想マシンの作成

VirtualMachine マニフェストを編集または作成することで、コマンドラインから仮想マシン (VM) を作成できます。仮想マシンマニフェストで インスタンスタイプ を使用すると、仮想マシン設定を簡素化できます。

注記

7.1.4.1. virtctl ツールを使用したマニフェストの作成

virtctl CLI ユーティリティーを使用すると、仮想マシン、仮想マシンインスタンスタイプ、および仮想マシン設定のマニフェストの作成を簡素化できます。詳細は、仮想マシンマニフェスト作成コマンド を参照してください。

7.1.4.2. VirtualMachine マニフェストからの仮想マシンの作成

VirtualMachine マニフェストから仮想マシンを作成できます。

手順

  1. 仮想マシンの 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

    1
    rhel9 ゴールデンイメージは、RHEL 9 をゲストオペレーティングシステムとしてインストールするために使用されます。
    2
    ゴールデンイメージは、openshift-virtualization-os-images namespace に保存されます。
    3
    u1.medium インスタンスタイプは、仮想マシンに 1 つの vCPU と 4Gi のメモリーを要求します。これらのリソース値は仮想マシン内で上書きできません。
    4
    rhel.9 設定は、RHEL 9 ゲストオペレーティングシステムをサポートする追加属性を指定します。
  2. マニフェストファイルを使用して仮想マシンを作成します。

    $ oc create -f <vm_manifest_file>.yaml
  3. オプション: 仮想マシンを起動します。

    $ virtctl start <vm_name> -n <namespace>
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.