7.2. カスタムイメージからの仮想マシンの作成
7.2.1. カスタムイメージからの仮想マシン作成の概要
次のいずれかの方法を使用して、カスタムオペレーティングシステムイメージから仮想マシンを作成できます。
レジストリーからイメージをコンテナーディスクとしてインポートします。
オプション: コンテナーディスクの自動更新を有効にすることができます。詳細は、ブートソースの自動更新の管理 を参照してください。
- Web ページからイメージをインポートします。
- ローカルマシンからイメージをアップロードします。
- イメージを含む永続ボリューム要求 (PVC) のクローンを作成します。
Containerized Data Importer (CDI) は、データボリュームを使用してイメージを PVC にインポートします。OpenShift Container Platform Web コンソールまたはコマンドラインを使用して、PVC を仮想マシンに追加します。
Red Hat が提供していないオペレーティングシステムイメージから作成された仮想マシンには、QEMU ゲストエージェント をインストールする必要があります。
Windows 仮想マシンにも VirtIO ドライバー をインストールする必要があります。
QEMU ゲストエージェントは Red Hat イメージに含まれています。
7.2.2. コンテナーディスクを使用した仮想マシンの作成
オペレーティングシステムイメージから構築されたコンテナーディスクを使用して、仮想マシンを作成できます。
コンテナーディスクの自動更新を有効にすることができます。詳細は、ブートソースの自動更新の管理 を参照してください。
コンテナーディスクが大きい場合は、I/O トラフィックが増加し、ワーカーノードが使用できなくなる可能性があります。この問題を解決するには、次のタスクを実行できます。
次の手順を実行して、コンテナーディスクから仮想マシンを作成します。
- オペレーティングシステムイメージをコンテナーディスクに構築し、それをコンテナーレジストリーにアップロードします。
- コンテナーレジストリーに TLS がない場合は、レジストリーの TLS を無効にするように環境を設定します。
- Web コンソール または コマンドライン を使用して、コンテナーディスクをディスクソースとして使用する仮想マシンを作成します。
Red Hat が提供していないオペレーティングシステムイメージから作成された仮想マシンには、QEMU ゲストエージェント をインストールする必要があります。
7.2.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
イメージを使用して結果を保存します。$ cat > Dockerfile << EOF FROM registry.access.redhat.com/ubi8/ubi:latest AS builder ADD --chown=107:107 <vm_image>.qcow2 /disk/ 1 RUN chmod 0440 /disk/* FROM scratch COPY --from=builder /disk/* /disk/ EOF
- 1
<vm_image>
は、QCOW2 または RAW 形式のイメージです。リモートイメージを使用する場合は、<vm_image>.qcow2
を完全な URL に置き換えます。
コンテナーをビルドし、これにタグ付けします。
$ podman build -t <registry>/<container_disk_name>:latest .
コンテナーイメージをレジストリーにプッシュします。
$ podman push <registry>/<container_disk_name>:latest
7.2.2.2. コンテナーレジストリーの TLS を無効にする
HyperConverged
カスタムリソースの insecureRegistries
フィールドを編集して、1 つ以上のコンテナーレジストリーの TLS(トランスポート層セキュリティー) を無効にできます。
前提条件
以下のコマンドを実行して、デフォルトのエディターで
HyperConverged
CR を開きます。$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
セキュアでないレジストリーのリストを
spec.storageImport.insecureRegistries
フィールドに追加します。HyperConverged
カスタムリソースの例apiVersion: hco.kubevirt.io/v1beta1 kind: HyperConverged metadata: name: kubevirt-hyperconverged namespace: openshift-cnv spec: storageImport: insecureRegistries: 1 - "private-registry-example-1:5000" - "private-registry-example-2:5000"
- 1
- このリストのサンプルを、有効なレジストリーホスト名に置き換えます。
7.2.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 をクリックします。
7.2.2.4. コマンドラインを使用したコンテナーディスクからの仮想マシンの作成
コマンドラインを使用して、コンテナーディスクから仮想マシンを作成できます。
仮想マシンが作成されると、コンテナーディスクを含むデータボリュームが永続ストレージにインポートされます。
前提条件
- コンテナーディスクを含むコンテナーレジストリーへのアクセス認証情報が必要です。
手順
コンテナーレジストリーで認証が必要な場合は、認証情報を指定して
Secret
マニフェストを作成し、data-source-secret.yaml
ファイルとして保存します。apiVersion: v1 kind: Secret metadata: name: data-source-secret labels: app: containerized-data-importer type: Opaque data: accessKeyId: "" 1 secretKey: "" 2
次のコマンドを実行して
Secret
マニフェストを取得します。$ oc apply -f data-source-secret.yaml
仮想マシンが自己署名証明書またはシステム CA バンドルによって署名されていない証明書を使用するサーバーと通信する必要がある場合は、仮想マシンと同じ namespace に config map を作成します。
$ oc create configmap tls-certs 1 --from-file=</path/to/file/ca.pem> 2
VirtualMachine
マニフェストを編集し、vm-fedora-datavolume.yaml
ファイルとして保存します。apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: creationTimestamp: null labels: kubevirt.io/vm: vm-fedora-datavolume name: vm-fedora-datavolume 1 spec: dataVolumeTemplates: - metadata: creationTimestamp: null name: fedora-dv 2 spec: storage: resources: requests: storage: 10Gi 3 storageClassName: <storage_class> 4 source: registry: url: "docker://kubevirt/fedora-cloud-container-disk-demo:latest" 5 secretRef: data-source-secret 6 certConfigMap: tls-certs 7 status: {} running: true template: metadata: creationTimestamp: null labels: kubevirt.io/vm: vm-fedora-datavolume spec: domain: devices: disks: - disk: bus: virtio name: datavolumedisk1 machine: type: "" resources: requests: memory: 1.5Gi terminationGracePeriodSeconds: 180 volumes: - dataVolume: name: fedora-dv name: datavolumedisk1 status: {}
次のコマンドを実行して VM を作成します。
$ oc create -f vm-fedora-datavolume.yaml
oc create
コマンドは、データボリュームと仮想マシンを作成します。CDI コントローラーは適切なアノテーションを使用して基礎となる PVC を作成し、インポートプロセスが開始されます。インポートが完了すると、データボリュームのステータスがSucceeded
に変わります。仮想マシンを起動できます。データボリュームのプロビジョニングはバックグランドで実行されるため、これをプロセスをモニターする必要はありません。
検証
インポーター Pod は、指定された URL からコンテナーディスクをダウンロードし、プロビジョニングされた永続ボリュームに保存します。以下のコマンドを実行してインポーター Pod のステータスを確認します。
$ oc get pods
次のコマンドを実行して、ステータスが
Succeeded
になるまでデータボリュームを監視します。$ oc describe dv fedora-dv 1
- 1
VirtualMachine
マニフェストで定義したデータボリューム名を指定します。
プロビジョニングが完了し、シリアルコンソールにアクセスして仮想マシンが起動したことを確認します。
$ virtctl console vm-fedora-datavolume
7.2.3. Web ページからイメージをインポートして仮想マシンを作成する
Web ページからオペレーティングシステムイメージをインポートすることで、仮想マシンを作成できます。
Red Hat が提供していないオペレーティングシステムイメージから作成された仮想マシンには、QEMU ゲストエージェント をインストールする必要があります。
7.2.3.1. Web コンソールを使用して Web ページ上のイメージから仮想マシンを作成する
OpenShift Container Platform Web コンソールを使用して Web ページからイメージをインポートすることで、仮想マシンを作成できます。
前提条件
- イメージを含む Web ページにアクセスできる。
手順
-
Web コンソールで Virtualization
Catalog に移動します。 - 使用可能なブートソースのないテンプレートタイルをクリックします。
- Customize VirtualMachine をクリックします。
- Customize template parameters ページで、Storage を展開し、Disk source リストから URL (creates PVC) を選択します。
-
イメージの URL を入力します。例:
https://access.redhat.com/downloads/content/69/ver=/rhel---7/7.9/x86_64/product-software
-
コンテナーイメージの 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 をクリックします。
7.2.3.2. コマンドラインを使用して Web ページ上のイメージから仮想マシンを作成する
コマンドラインを使用して、Web ページ上のイメージから仮想マシンを作成できます。
仮想マシンが作成されると、イメージを含むデータボリュームが永続ストレージにインポートされます。
前提条件
- イメージを含む Web ページへのアクセス認証情報が必要です。
手順
Web ページで認証が必要な場合は、認証情報を指定して
Secret
マニフェストを作成し、data-source-secret.yaml
ファイルとして保存します。apiVersion: v1 kind: Secret metadata: name: data-source-secret labels: app: containerized-data-importer type: Opaque data: accessKeyId: "" 1 secretKey: "" 2
次のコマンドを実行して
Secret
マニフェストを取得します。$ oc apply -f data-source-secret.yaml
仮想マシンが自己署名証明書またはシステム CA バンドルによって署名されていない証明書を使用するサーバーと通信する必要がある場合は、仮想マシンと同じ namespace に config map を作成します。
$ oc create configmap tls-certs 1 --from-file=</path/to/file/ca.pem> 2
VirtualMachine
マニフェストを編集し、vm-fedora-datavolume.yaml
ファイルとして保存します。apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: creationTimestamp: null labels: kubevirt.io/vm: vm-fedora-datavolume name: vm-fedora-datavolume 1 spec: dataVolumeTemplates: - metadata: creationTimestamp: null name: fedora-dv 2 spec: storage: resources: requests: storage: 10Gi 3 storageClassName: <storage_class> 4 source: http: url: "https://mirror.arizona.edu/fedora/linux/releases/35/Cloud/x86_64/images/Fedora-Cloud-Base-35-1.2.x86_64.qcow2" 5 registry: url: "docker://kubevirt/fedora-cloud-container-disk-demo:latest" 6 secretRef: data-source-secret 7 certConfigMap: tls-certs 8 status: {} running: true template: metadata: creationTimestamp: null labels: kubevirt.io/vm: vm-fedora-datavolume spec: domain: devices: disks: - disk: bus: virtio name: datavolumedisk1 machine: type: "" resources: requests: memory: 1.5Gi terminationGracePeriodSeconds: 180 volumes: - dataVolume: name: fedora-dv name: datavolumedisk1 status: {}
次のコマンドを実行して VM を作成します。
$ oc create -f vm-fedora-datavolume.yaml
oc create
コマンドは、データボリュームと仮想マシンを作成します。CDI コントローラーは適切なアノテーションを使用して基礎となる PVC を作成し、インポートプロセスが開始されます。インポートが完了すると、データボリュームのステータスがSucceeded
に変わります。仮想マシンを起動できます。データボリュームのプロビジョニングはバックグランドで実行されるため、これをプロセスをモニターする必要はありません。
検証
インポーター Pod は、指定された URL からイメージをダウンロードし、プロビジョニングされた永続ボリュームに保存します。以下のコマンドを実行してインポーター Pod のステータスを確認します。
$ oc get pods
次のコマンドを実行して、ステータスが
Succeeded
になるまでデータボリュームを監視します。$ oc describe dv fedora-dv 1
- 1
VirtualMachine
マニフェストで定義したデータボリューム名を指定します。
プロビジョニングが完了し、シリアルコンソールにアクセスして仮想マシンが起動したことを確認します。
$ virtctl console vm-fedora-datavolume
7.2.4. イメージをアップロードして仮想マシンを作成する
ローカルマシンからオペレーティングシステムイメージをアップロードすることで、仮想マシンを作成できます。
Windows イメージを PVC にアップロードすることで、Windows 仮想マシンを作成できます。次に、仮想マシンの作成時に PVC のクローンを作成します。
Red Hat が提供していないオペレーティングシステムイメージから作成された仮想マシンには、QEMU ゲストエージェント をインストールする必要があります。
Windows 仮想マシンにも VirtIO ドライバー をインストールする必要があります。
7.2.4.1. Web コンソールを使用して、アップロードされたイメージから仮想マシンを作成する
OpenShift Container Platform Web コンソールを使用して、アップロードされたオペレーティングシステムイメージから仮想マシンを作成できます。
前提条件
-
IMG
、ISO
、またはQCOW2
イメージファイルが必要です。
手順
-
Web コンソールで Virtualization
Catalog に移動します。 - 使用可能なブートソースのないテンプレートタイルをクリックします。
- Customize VirtualMachine をクリックします。
- Customize template parameters ページで、Storage を展開し、Disk source リストから Upload (Upload a new file to a PVC) を選択します。
- ローカルマシン上のイメージを参照し、ディスクサイズを設定します。
- Customize VirtualMachine をクリックします。
- Create VirtualMachine をクリックします。
7.2.4.2. Windows 仮想マシンの作成
Windows 仮想マシンを作成するには、Windows イメージを永続ボリューム要求 (PVC) にアップロードし、OpenShift Container Platform Web コンソールを使用して仮想マシンを作成するときに PVC のクローンを作成します。
前提条件
- Windows Media Creation Tool を使用して Windows インストール DVD または USB が作成されている。Microsoft ドキュメントの Windows 10 インストールメディアの作成 を参照してください。
-
autounattend.xml
アンサーファイルを作成しました。Microsoft ドキュメントの アンサーファイル (unattend.xml) を参照してください。
手順
Windows イメージを新しい PVC としてアップロードします。
-
Web コンソールで Storage
PersistentVolumeClaims に移動します。 -
Create PersistentVolumeClaim
With Data upload form をクリックします。 - Windows イメージを参照して選択します。
PVC 名を入力し、ストレージクラスとサイズを選択して、Upload をクリックします。
Windows イメージは PVC にアップロードされます。
-
Web コンソールで Storage
アップロードされた PVC のクローンを作成して、新しい仮想マシンを設定します。
-
Virtualization
Catalog に移動します。 - Windows テンプレートタイルを選択し、Customize VirtualMachine をクリックします。
- Disk source リストから Clone (clone PVC) を選択します。
- PVC プロジェクト、Windows イメージ PVC、およびディスクサイズを選択します。
-
Virtualization
アンサーファイルを仮想マシンに適用します。
- VirtualMachine パラメーターのカスタマイズ をクリックします。
- Scripts タブの Sysprep セクションで、Edit をクリックします。
-
autounattend.xml
応答ファイルを参照し、Save をクリックします。
仮想マシンの実行戦略を設定します。
- 仮想マシンがすぐに起動しないように、Start this VirtualMachine after creation をオフにします。
- Create VirtualMachine をクリックします。
-
YAML タブで、
running:false
をrunStrategy: RerunOnFailure
に置き換え、Save をクリックします。
オプションメニュー をクリックして Start を選択します。
仮想マシンは、
autounattend.xml
アンサーファイルを含むsysprep
ディスクから起動します。
7.2.4.2.1. Windows 仮想マシンイメージの一般化
Windows オペレーティングシステムイメージを一般化して、イメージを使用して新しい仮想マシンを作成する前に、システム固有の設定データをすべて削除できます。
仮想マシンを一般化する前に、Windows の無人インストール後にsysprep
ツールが応答ファイルを検出できないことを確認する必要があります。
前提条件
- QEMU ゲストエージェントがインストールされた実行中の Windows 仮想マシン。
手順
-
OpenShift Container Platform コンソールで、Virtualization
VirtualMachines をクリックします。 - Windows 仮想マシンを選択して、VirtualMachine details ページを開きます。
-
Configuration
Disks をクリックします。 -
sysprep
ディスクの横にある Options メニュー をクリックし、Detach を選択します。 - Detach をクリックします。
-
sysprep
ツールによる検出を回避するために、C:\Windows\Panther\unattend.xml
の名前を変更します。 次のコマンドを実行して、
sysprep
プログラムを開始します。%WINDIR%\System32\Sysprep\sysprep.exe /generalize /shutdown /oobe /mode:vm
-
sysprep
ツールが完了すると、Windows 仮想マシンがシャットダウンします。これで、仮想マシンのディスクイメージを Windows 仮想マシンのインストールイメージとして使用できるようになりました。
これで、仮想マシンを特殊化できます。
7.2.4.2.2. Windows 仮想マシンイメージの特殊化
Windows 仮想マシンを特殊化すると、一般化された Windows イメージから VM にコンピューター固有の情報が設定されます。
前提条件
- 一般化された Windows ディスクイメージが必要です。
-
unattend.xml
応答ファイルを作成する必要があります。詳細は、Microsoft のドキュメント を参照してください。
手順
-
OpenShift Container Platform コンソールで、Virtualization
Catalog をクリックします。 - Windows テンプレートを選択し、Customize VirtualMachine をクリックします。
- Disk source リストから PVC (clone PVC) を選択します。
- 一般化された Windows イメージの PVC プロジェクトと PVC 名を選択します。
- VirtualMachine パラメーターのカスタマイズ をクリックします。
- Scripts タブをクリックします。
-
Sysprep セクションで、Edit をクリックし、
unattend.xml
応答ファイルを参照して、Save をクリックします。 - Create VirtualMachine をクリックします。
Windows は初回起動時に、unattend.xml
応答ファイルを使用して VM を特殊化します。これで、仮想マシンを使用する準備が整いました。
Windows 仮想マシンを作成するための関連情報
7.2.4.3. コマンドラインを使用して、アップロードされたイメージから仮想マシンを作成する
virtctl
コマンドラインツールを使用して、オペレーティングシステムイメージをアップロードできます。既存のデータボリュームを使用することも、イメージ用に新しいデータボリュームを作成することもできます。
前提条件
-
ISO
、IMG
、またはQCOW2
オペレーティングシステムイメージファイルがある。 -
最高のパフォーマンスを得るには、virt-sparsify ツールまたは
xz
ユーティリティーまたはgzip
ユーティリティーを使用してイメージファイルを圧縮しておく。 -
virtctl
がインストールされている。 - クライアントマシンが OpenShift Container Platform ルーターの証明書を信頼するように設定されている。
手順
virtctl image-upload
コマンドを実行してイメージをアップロードします。$ virtctl image-upload dv <datavolume_name> \ 1 --size=<datavolume_size> \ 2 --image-path=</path/to/image> \ 3
注記-
新規データボリュームを作成する必要がない場合は、
--size
パラメーターを省略し、--no-create
フラグを含めます。 - ディスクイメージを PVC にアップロードする場合、PVC サイズは圧縮されていない仮想ディスクのサイズよりも大きくなければなりません。
-
HTTPS を使用したセキュアでないサーバー接続を許可するには、
--insecure
パラメーターを使用します。--insecure
フラグを使用する際に、アップロードエンドポイントの信頼性は検証 されない 点に注意してください。
-
新規データボリュームを作成する必要がない場合は、
オプション: データボリュームが作成されたことを確認するには、以下のコマンドを実行してすべてのデータボリュームを表示します。
$ oc get dvs
7.2.5. PVC のクローン作成による仮想マシンの作成
カスタムイメージを使用して既存の Persistent Volume Claim (PVC) のクローンを作成することで、仮想マシンを作成できます。
PVC のクローンを作成するには、ソース PVC を参照するデータボリュームを作成します。
Red Hat が提供していないオペレーティングシステムイメージから作成された仮想マシンには、QEMU ゲストエージェント をインストールする必要があります。
7.2.5.1. Web コンソールを使用した PVC からの仮想マシンの作成
OpenShift Container Platform Web コンソールを使用して Web ページからイメージをインポートすることで、仮想マシンを作成できます。OpenShift Container Platform Web コンソールを使用して永続ボリューム要求 (PVC) のクローンを作成することにより、仮想マシンを作成できます。
前提条件
- イメージを含む Web ページにアクセスできる。
- ソース PVC を含む namespace にアクセスできる。
手順
-
Web コンソールで Virtualization
Catalog に移動します。 - 使用可能なブートソースのないテンプレートタイルをクリックします。
- Customize VirtualMachine をクリックします。
- テンプレートパラメーターのカスタマイズ ページで、Storage を展開し、Disk source リストから PVC (clone PVC) を選択します。
-
イメージの URL を入力します。例:
https://access.redhat.com/downloads/content/69/ver=/rhel---7/7.9/x86_64/product-software
-
コンテナーイメージの URL を入力します。例:
https://mirror.arizona.edu/fedora/linux/releases/38/Cloud/x86_64/images/Fedora-Cloud-Base-38-1.6.x86_64.qcow2
- PVC プロジェクトと PVC 名を選択します。
- ディスクサイズを設定します。
- Next をクリックします。
- Create VirtualMachine をクリックします。
7.2.5.2. コマンドラインを使用した PVC からの仮想マシンの作成
コマンドラインを使用して既存の仮想マシンの永続ボリューム要求 (PVC) のクローンを作成することで、仮想マシンを作成できます。
次のオプションのいずれかを使用して、PVC のクローンを作成できます。
PVC を新しいデータボリュームに複製します。
この方法では、ライフサイクルが元の仮想マシンから独立したデータボリュームが作成されます。元の仮想マシンを削除しても、新しいデータボリュームやそれに関連付けられた PVC には影響しません。
dataVolumeTemplates
スタンザを含むVirtualMachine
マニフェストを作成して、PVC を複製します。この方法では、ライフサイクルが元の仮想マシンに依存するデータボリュームが作成されます。元の仮想マシンを削除すると、クローン作成されたデータボリュームとそれに関連付けられた PVC も削除されます。
7.2.5.2.1. データボリュームへの PVC のクローン作成
コマンドラインを使用して、既存の仮想マシンディスクの永続ボリューム要求 (PVC) のクローンをデータボリュームに作成できます。
元のソース PVC を参照するデータボリュームを作成します。新しいデータボリュームのライフサイクルは、元の仮想マシンから独立しています。元の仮想マシンを削除しても、新しいデータボリュームやそれに関連付けられた PVC には影響しません。
異なるボリュームモード間のクローン作成は、ソース PV とターゲット PV が kubevirt
コンテンツタイプに属している限り、ブロック永続ボリューム (PV) からファイルシステム PV へのクローン作成など、ホスト支援型クローン作成でサポートされます。
スマートクローン作成は、スナップショットを使用して PVC のクローンを作成するため、ホスト支援型クローン作成よりも高速かつ効率的です。スマートクローン作成は、Red Hat OpenShift Data Foundation など、スナップショットをサポートするストレージプロバイダーによってサポートされています。
異なるボリュームモード間のクローン作成は、スマートクローン作成ではサポートされていません。
前提条件
- ソース 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 # ...
StorageClass
オブジェクトの例kind: StorageClass apiVersion: storage.k8s.io/v1 # ... provisioner: openshift-storage.rbd.csi.ceph.com
手順
次の例に示すように、
DataVolume
マニフェストを作成します。apiVersion: cdi.kubevirt.io/v1beta1 kind: DataVolume metadata: name: <datavolume> 1 spec: source: pvc: namespace: "<source_namespace>" 2 name: "<my_vm_disk>" 3 storage: {}
以下のコマンドを実行してデータボリュームを作成します。
$ oc create -f <datavolume>.yaml
注記データ量により、PVC が準備される前に仮想マシンが起動できなくなります。PVC のクローン作成中に、新しいデータボリュームを参照する仮想マシンを作成できます。
7.2.5.2.2. データボリュームテンプレートを使用したクローン PVC からの仮想マシンの作成
データボリュームテンプレートを使用して、既存の仮想マシンの永続ボリューム要求 (PVC) のクローンを作成する仮想マシンを作成できます。
この方法では、ライフサイクルが元の仮想マシンに依存するデータボリュームが作成されます。元の仮想マシンを削除すると、クローン作成されたデータボリュームとそれに関連付けられた PVC も削除されます。
前提条件
- ソース PVC を含む仮想マシンの電源をオフにする必要があります。
手順
次の例に示すように、
VirtualMachine
マニフェストを作成します。apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: labels: kubevirt.io/vm: vm-dv-clone name: vm-dv-clone 1 spec: running: false template: metadata: labels: kubevirt.io/vm: vm-dv-clone spec: domain: devices: disks: - disk: bus: virtio name: root-disk resources: requests: memory: 64M volumes: - dataVolume: name: favorite-clone name: root-disk dataVolumeTemplates: - metadata: name: favorite-clone spec: storage: accessModes: - ReadWriteOnce resources: requests: storage: 2Gi source: pvc: namespace: <source_namespace> 2 name: "<source_pvc>" 3
PVC のクローンが作成されたデータボリュームで仮想マシンを作成します。
$ oc create -f <vm-clone-datavolumetemplate>.yaml
7.2.6. QEMU ゲストエージェントと VirtIO ドライバーのインストール
QEMU ゲストエージェントは、仮想マシンで実行され、仮想マシン、ユーザー、ファイルシステム、およびセカンダリーネットワークに関する情報をホストに渡すデーモンです。
Red Hat が提供していないオペレーティングシステムイメージから作成された仮想マシンには、QEMU ゲストエージェントをインストールする必要があります。
7.2.6.1. QEMU ゲストエージェントのインストール
7.2.6.1.1. Linux 仮想マシンへの QEMU ゲストエージェントのインストール
qemu-guest-agent
は広範な使用が可能で、Red Hat Enterprise Linux (RHEL) 仮想マシン (VM) においてデフォルトで使用できます。このエージェントをインストールし、サービスを起動します。
整合性が最も高いオンライン (実行状態) の仮想マシンのスナップショットを作成するには、QEMU ゲストエージェントをインストールします。
QEMU ゲストエージェントは、システムのワークロードに応じて、可能な限り仮想マシンのファイルシステムの休止しようとすることで一貫性のあるスナップショットを取得します。これにより、スナップショットの作成前にインフライトの I/O がディスクに書き込まれるようになります。ゲストエージェントが存在しない場合は、休止はできず、ベストエフォートスナップショットが作成されます。スナップショットの作成条件は、Web コンソールまたは CLI に表示されるスナップショットの指示に反映されます。
手順
- コンソールまたは SSH を使用して仮想マシンにログインします。
次のコマンドを実行して、QEMU ゲストエージェントをインストールします。
$ yum install -y qemu-guest-agent
サービスに永続性があることを確認し、これを起動します。
$ systemctl enable --now qemu-guest-agent
検証
次のコマンドを実行して、
AgentConnected
が VM 仕様にリストされていることを確認します。$ oc get vm <vm_name>
7.2.6.1.2. Windows 仮想マシンへの QEMU ゲストエージェントのインストール
Windows 仮想マシンの場合には、QEMU ゲストエージェントは VirtIO ドライバーに含まれます。ドライバーは、Windows のインストール中または既存の Windows 仮想マシンにインストールできます。
整合性が最も高いオンライン (実行状態) の仮想マシンのスナップショットを作成するには、QEMU ゲストエージェントをインストールします。
QEMU ゲストエージェントは、システムのワークロードに応じて、可能な限り仮想マシンのファイルシステムの休止しようとすることで一貫性のあるスナップショットを取得します。これにより、スナップショットの作成前にインフライトの I/O がディスクに書き込まれるようになります。ゲストエージェントが存在しない場合は、休止はできず、ベストエフォートスナップショットが作成されます。スナップショットの作成条件は、Web コンソールまたは CLI に表示されるスナップショットの指示に反映されます。
手順
-
Windows Guest Operating System で、File Explorer を使用して、
virtio-win
CD ドライブのguest-agent
ディレクトリーに移動します。 -
qemu-ga-x86_64.msi
インストーラーを実行します。
検証
次のコマンドを実行して、ネットワークサービスのリストを取得します。
$ net start
-
出力に
QEMU Guest Agent
が含まれていることを確認します。
7.2.6.2. Windows 仮想マシンへの VirtIO ドライバーのインストール
VirtIO ドライバーは、Microsoft Windows 仮想マシンが OpenShift Virtualization で実行されるために必要な準仮想化デバイスドライバーです。ドライバーは残りのイメージと同梱されるされるため、個別にダウンロードする必要はありません。
container-native-virtualization/virtio-win
コンテナーディスクは、ドライバーのインストールを有効にするために SATA CD ドライブとして仮想マシンに割り当てられる必要があります。VirtIO ドライバーは、Windows のインストール中にインストールすることも、既存の Windows インストールに追加することもできます。
ドライバーのインストール後に、container-native-virtualization/virtio-win
コンテナーディスクは仮想マシンから削除できます。
ドライバー名 | ハードウェア ID | 説明 |
---|---|---|
viostor |
VEN_1AF4&DEV_1001 | ブロックドライバー。Other devices グループの SCSI Controller としてラベル付けされる場合があります。 |
viorng |
VEN_1AF4&DEV_1005 | エントロピーソースドライバー。Other devices グループの PCI Device としてラベル付けされる場合があります。 |
NetKVM |
VEN_1AF4&DEV_1000 | ネットワークドライバー。Other devices グループの Ethernet Controller としてラベル付けされる場合があります。VirtIO NIC が設定されている場合にのみ利用できます。 |
7.2.6.2.1. インストール中に VirtIO コンテナーディスクを Windows 仮想マシンにアタッチする
必要な Windows ドライバーをインストールするには、VirtIO コンテナーディスクを Windows 仮想マシンにアタッチする必要があります。これは、仮想マシンの作成時に実行できます。
手順
- テンプレートから Windows 仮想マシンを作成する場合は、Customize VirtualMachine をクリックします。
- Mount Windows drivers disk を選択します。
- Customize VirtualMachine parameters をクリックします。
- Create VirtualMachine をクリックします。
仮想マシンの作成後、virtio-win
SATA CD ディスクが仮想マシンにアタッチされます。
7.2.6.2.2. VirtIO コンテナーディスクを既存の Windows 仮想マシンにアタッチする
必要な Windows ドライバーをインストールするには、VirtIO コンテナーディスクを Windows 仮想マシンにアタッチする必要があります。これは既存の仮想マシンに対して実行できます。
手順
-
既存の Windows 仮想マシンに移動し、Actions
Stop をクリックします。 -
VM Details
Configuration Disks に移動し、Add disk をクリックします。 -
コンテナーソースから
windows-driver-disk
を追加し、Type を CD-ROM に設定して、Interface を SATA に設定します。 - Save をクリックします。
- 仮想マシンを起動し、グラフィカルコンソールに接続します。
7.2.6.2.3. Windows インストール時の VirtIO ドライバーのインストール
仮想マシンに Windows をインストールする際に VirtIO ドライバーをインストールできます。
この手順では、Windows インストールの汎用的なアプローチを使用しますが、インストール方法は Windows のバージョンごとに異なる可能性があります。インストールする Windows のバージョンに関するドキュメントを参照してください。
前提条件
-
virtio
ドライバーを含むストレージデバイスを仮想マシンに接続している。
手順
-
Windows オペレーティングシステムでは、
File Explorer
を使用してvirtio-win
CD ドライブに移動します。 ドライブをダブルクリックして、仮想マシンに適切なインストーラーを実行します。
64 ビット vCPU の場合は、
virtio-win-gt-x64
インストーラーを選択します。32 ビット vCPU はサポート対象外になりました。- オプション: インストーラーの Custom Setup 手順で、インストールするデバイスドライバーを選択します。デフォルトでは、推奨ドライバーセットが選択されています。
- インストールが完了したら、Finish を選択します。
- 仮想マシンを再起動します。
検証
-
PC でシステムディスクを開きます。通常は
(C:)
です。 -
Program Files
Virtio-Win に移動します。
Virtio-Win ディレクトリーが存在し、各ドライバーのサブディレクトリーが含まれていればインストールは成功です。
7.2.6.2.4. 既存の Windows 仮想マシン上の SATA CD ドライブから VirtIO ドライバーのインストール
VirtIO ドライバーは、SATA CD ドライブから既存の Windows 仮想マシンにインストールできます。
この手順では、ドライバーを Windows に追加するための汎用的なアプローチを使用しています。特定のインストール手順は、お使いの Windows バージョンに関するインストールドキュメントを参照してください。
前提条件
- virtio ドライバーを含むストレージデバイスは、SATA CD ドライブとして仮想マシンに接続する必要があります。
手順
- 仮想マシンを起動し、グラフィカルコンソールに接続します。
- Windows ユーザーセッションにログインします。
Device Manager を開き、Other devices を拡張して、Unknown device をリスト表示します。
- Device Properties を開いて、不明なデバイスを特定します。
- デバイスを右クリックし、Properties を選択します。
- Details タブをクリックし、Property リストで Hardware Ids を選択します。
- Hardware Ids の Value をサポートされる VirtIO ドライバーと比較します。
- デバイスを右クリックし、Update Driver Software を選択します。
- Browse my computer for driver software をクリックし、VirtIO ドライバーが置かれている割り当て済みの SATA CD ドライブの場所に移動します。ドライバーは、ドライバーのタイプ、オペレーティングシステム、および CPU アーキテクチャー別に階層的に編成されます。
- Next をクリックしてドライバーをインストールします。
- 必要なすべての VirtIO ドライバーに対してこのプロセスを繰り返します。
- ドライバーのインストール後に、Close をクリックしてウィンドウを閉じます。
- 仮想マシンを再起動してドライバーのインストールを完了します。
7.2.6.2.5. SATA CD ドライブとして追加されたコンテナーディスクからの VirtIO ドライバーのインストール
Windows 仮想マシンに SATA CD ドライブとして追加するコンテナーディスクから VirtIO ドライバーをインストールできます。
コンテナーディスクがクラスター内に存在しない場合、コンテナーディスクは Red Hat レジストリーからダウンロードされるため、Red Hat エコシステムカタログ からの container-native-virtualization/virtio-win
コンテナーディスクのダウンロードは必須ではありません。ただし、ダウンロードするとインストール時間が短縮されます。
前提条件
-
制限された環境では、Red Hat レジストリー、またはダウンロードされた
container-native-virtualization/virtio-win
コンテナーディスクにアクセスできる必要があります。
手順
VirtualMachine
マニフェストを編集して、container-native-virtualization/virtio-win
コンテナーディスクを CD ドライブとして追加します。# ... spec: domain: devices: disks: - name: virtiocontainerdisk bootOrder: 2 1 cdrom: bus: sata volumes: - containerDisk: image: container-native-virtualization/virtio-win name: virtiocontainerdisk
- 1
- OpenShift Virtualization は、
VirtualMachine
マニフェストで定義された順序で仮想マシンディスクを起動します。container-native-virtualization/virtio-win
コンテナーディスクの前に起動する他の仮想マシンディスクを定義するか、オプションのbootOrder
パラメーターを使用して仮想マシンが正しいディスクから起動するようにすることができます。ディスクのブート順序を設定する場合は、他のディスクのブート順序も設定する必要があります。
変更を適用します。
仮想マシンを実行していない場合は、次のコマンドを実行します。
$ virtctl start <vm> -n <namespace>
仮想マシンが実行中の場合は、仮想マシンを再起動するか、次のコマンドを実行します。
$ oc apply -f <vm.yaml>
- 仮想マシンが起動したら、SATA CD ドライブから VirtIO ドライバーをインストールします。
7.2.6.3. VirtIO ドライバーの更新
7.2.6.3.1. Windows 仮想マシンでの VirtIO ドライバーの更新
Windows Update サービスを使用して、Windows 仮想マシン上の virtio
ドライバーを更新します。
前提条件
- クラスターはインターネットに接続されている必要があります。切断されたクラスターは Windows Update サービスにアクセスできません。
手順
- Windows ゲストオペレーティングシステムで、Windows キーをクリックし、Settings を選択します。
-
Windows Update
Advanced Options Optional Updates に移動します。 - Red Hat, Inc. からのすべての更新をインストールします。
- 仮想マシンを再起動します。
検証
- Windows 仮想マシンで、Device Manager に移動します。
- デバイスを選択します。
- Driver タブを選択します。
-
Driver Details をクリックし、
virtio
ドライバーの詳細に正しいバージョンが表示されていることを確認します。