10.3. ブートソースの自動更新の管理
次のブートソースの自動更新を管理できます。
ブートソースにより、ユーザーは仮想マシン (VM) をよりアクセスしやすく効率的に作成できるようになります。ブートソースの自動更新が有効になっている場合、コンテナー化データインポーター (CDI) はイメージをインポート、ポーリング、更新して、新しい仮想マシン用にクローンを作成できるようにします。デフォルトでは、CDI は Red Hat ブートソースを自動的に更新します。
10.3.1. Red Hat ブートソースの更新の管理 リンクのコピーリンクがクリップボードにコピーされました!
enableCommonBootImageImport
フィールドの値を false
に設定することで、すべてのシステム定義のブートソースの自動更新をオプトアウトできます。値を false
に設定すると、すべての DataImportCron
オブジェクトが削除されます。ただし、これによって、オペレーティングシステムイメージを格納する、以前にインポートされたブートソースオブジェクトが削除されるわけではありません。管理者は、これらを手動で削除できます。
enableCommonBootImageImport
フィールドの値が false
に設定されている場合、DataSource
オブジェクトはリセットされ、元のブートソースをポイントしなくなります。管理者は、DataSource
オブジェクトの新しい永続ボリューム要求 (PVC) またはボリュームスナップショットを作成し、それにオペレーティングシステムイメージを設定することで、ブートソースを手動で提供できます。
10.3.1.1. すべてのシステム定義のブートソースの自動更新の管理 リンクのコピーリンクがクリップボードにコピーされました!
ブートソースの自動インポートと更新を無効にすると、リソースの使用量が削減される可能性があります。切断された環境では、ブートソースの自動更新を無効にすると、CDIDataImportCronOutdated
アラートがログをいっぱいにするのを防ぎます。
すべてのシステム定義のブートソースの自動更新を無効にするには、enableCommonBootImageImport
フィールドの値を false
に設定します。この値を true
に設定すると、自動更新が再びオンになります。
カスタムブートソースは、この設定の影響を受けません。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。
手順
HyperConverged
カスタムリソース (CR) を編集して、自動ブートソース更新を有効または無効にします。自動ブートソース更新を無効にするには、
HyperConverged
CR のspec.enableCommonBootImageImport
フィールド値をfalse
に設定します。以下に例を示します。oc patch hyperconverged kubevirt-hyperconverged -n openshift-cnv \ --type json -p '[{"op": "replace", "path": \ "/spec/enableCommonBootImageImport", \ "value": false}]'
$ oc patch hyperconverged kubevirt-hyperconverged -n openshift-cnv \ --type json -p '[{"op": "replace", "path": \ "/spec/enableCommonBootImageImport", \ "value": false}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 自動ブートソース更新を再度有効にするには、
HyperConverged
CR のspec.enableCommonBootImageImport
フィールド値をtrue
に設定します。以下に例を示します。oc patch hyperconverged kubevirt-hyperconverged -n openshift-cnv \ --type json -p '[{"op": "replace", "path": \ "/spec/enableCommonBootImageImport", \ "value": true}]'
$ oc patch hyperconverged kubevirt-hyperconverged -n openshift-cnv \ --type json -p '[{"op": "replace", "path": \ "/spec/enableCommonBootImageImport", \ "value": true}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.3.2. カスタムブートソースの更新の管理 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Virtualization によって提供されていない カスタム ブートソースは、機能ゲートによって制御されません。HyperConverged
カスタムリソース (CR) を編集して、それらを個別に管理する必要があります。
ストレージプロファイルを設定する必要があります。そうしないと、クラスターはカスタムブートソースの自動更新を受信できません。詳細は、ストレージプロファイルの設定 を参照してください。
10.3.2.1. デフォルトおよび virt-default ストレージクラスの設定 リンクのコピーリンクがクリップボードにコピーされました!
ストレージクラスは、ワークロードに対して永続ストレージをプロビジョニングする方法を決定します。OpenShift Virtualization では、virt-default ストレージクラスがクラスターのデフォルトストレージクラスよりも優先され、仮想化ワークロード専用に使用されます。virt-default またはクラスターのデフォルトとして一度に設定できるストレージクラスは 1 つだけです。複数のストレージクラスがデフォルトとしてマークされている場合、virt-default ストレージクラスがクラスターのデフォルトをオーバーライドします。一貫した動作を確保するには、仮想化ワークロードのデフォルトとして 1 つのストレージクラスのみを設定します。
ブートソースは、デフォルトのストレージクラスを使用して作成されます。デフォルトのストレージクラスが変更されると、古いブートソースは新しいデフォルトのストレージクラスを使用して自動的に更新されます。クラスターにデフォルトのストレージクラスがない場合は、定義する必要があります。
ブートソースイメージがボリュームスナップショットとして保存され、クラスターのデフォルトと virt-default ストレージクラスの両方が設定解除されている場合、ボリュームスナップショットはクリーンアップされ、新しいデータボリュームが作成されます。ただし、新しく作成されたデータボリュームは、デフォルトのストレージクラスが設定されるまでインポートを開始しません。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。
手順
現在の virt-default またはクラスターのデフォルトストレージクラスを false にパッチします。
次のコマンドを実行して、現在 virt-default としてマークされているすべてのストレージクラスを識別します。
oc get sc -o json| jq '.items[].metadata|select(.annotations."storageclass.kubevirt.io/is-default-virt-class"=="true")|.name'
$ oc get sc -o json| jq '.items[].metadata|select(.annotations."storageclass.kubevirt.io/is-default-virt-class"=="true")|.name'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 返されたストレージクラスごとに、次のコマンドを実行して virt-default アノテーションを削除します。
oc patch storageclass <storage_class_name> -p '{"metadata": {"annotations": {"storageclass.kubevirt.io/is-default-virt-class": "false"}}}'
$ oc patch storageclass <storage_class_name> -p '{"metadata": {"annotations": {"storageclass.kubevirt.io/is-default-virt-class": "false"}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、現在クラスターのデフォルトとしてマークされているすべてのストレージクラスを識別します。
oc get sc -o json| jq '.items[].metadata|select(.annotations."storageclass.kubernetes.io/is-default-class"=="true")|.name'
$ oc get sc -o json| jq '.items[].metadata|select(.annotations."storageclass.kubernetes.io/is-default-class"=="true")|.name'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 返されたストレージクラスごとに、次のコマンドを実行してクラスターのデフォルトアノテーションを削除します。
oc patch storageclass <storage_class_name> -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "false"}}}'
$ oc patch storageclass <storage_class_name> -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "false"}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
新しいデフォルトのストレージクラスを設定します。
次のコマンドを実行して、virt-default ロールをストレージクラスに割り当てます。
oc patch storageclass <storage_class_name> -p '{"metadata": {"annotations": {"storageclass.kubevirt.io/is-default-virt-class": "true"}}}'
$ oc patch storageclass <storage_class_name> -p '{"metadata": {"annotations": {"storageclass.kubevirt.io/is-default-virt-class": "true"}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow または、次のコマンドを実行して、クラスターのデフォルトロールをストレージクラスに割り当てます。
oc patch storageclass <storage_class_name> -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "true"}}}'
$ oc patch storageclass <storage_class_name> -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "true"}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.3.2.2. ブートソースイメージのストレージクラスの設定 リンクのコピーリンクがクリップボードにコピーされました!
HyperConverged
リソースで特定のストレージクラスを設定できます。
安定した動作を確保し、不要な再インポートを回避するには、HyperConverged
リソースの dataImportCronTemplates
セクションで storageClassName
を指定します。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。
手順
以下のコマンドを実行して、デフォルトのエディターで
HyperConverged
CR を開きます。oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow HyperConverged
リソースの spec セクションにdataImportCronTemplate
を追加し、storageClassName
を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow For the custom image to be detected as an available boot source, the value of the `spec.dataVolumeTemplates.spec.sourceRef.name` parameter in the VM template must match this value.
For the custom image to be detected as an available boot source, the value of the `spec.dataVolumeTemplates.spec.sourceRef.name` parameter in the VM template must match this value.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - HyperConverged Operator (HCO) と Scheduling、Scale、および Performance (SSP) リソースのリコンシリエーションが完了するまで待ちます。
次のコマンドを実行して、
openshift-virtualization-os-images
namespace から古くなったDataVolume
およびVolumeSnapshot
オブジェクトを削除します。oc delete DataVolume,VolumeSnapshot -n openshift-virtualization-os-images --selector=cdi.kubevirt.io/dataImportCron
$ oc delete DataVolume,VolumeSnapshot -n openshift-virtualization-os-images --selector=cdi.kubevirt.io/dataImportCron
Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべての
DataSource
オブジェクトが "Ready - True" ステータスに達するまで待機します。データソースは、PersistentVolumeClaim (PVC) または VolumeSnapshot のいずれかを参照できます。予想されるソース形式を確認するには、次のコマンドを実行します。oc get storageprofile <storage_class_name> -o json | jq .status.dataImportCronSourceFormat
$ oc get storageprofile <storage_class_name> -o json | jq .status.dataImportCronSourceFormat
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.3.2.3. カスタムブートソースの自動更新を有効にする リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Virtualization は、デフォルトでシステム定義のブートソースを自動的に更新しますが、カスタムブートソースは自動的に更新しません。HyperConverged
カスタムリソース (CR) を編集して、自動更新を手動で有効にする必要があります。
前提条件
- クラスターにはデフォルトのストレージクラスがあります。
-
OpenShift CLI (
oc
) がインストールされている。
手順
以下のコマンドを実行して、デフォルトのエディターで
HyperConverged
CR を開きます。oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 適切なテンプレートおよびブートソースを
dataImportCronTemplates
セクションで追加して、HyperConverged
CR を編集します。以下に例を示します。カスタムリソースの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- このアノテーションは、
volumeBindingMode
がWaitForFirstConsumer
に設定されたストレージクラスに必要です。 - 2
- cron 形式で指定されるジョブのスケジュール。
- 3
- レジストリーソースからデータボリュームを作成するのに使用します。
node
docker キャッシュに基づくデフォルトのnode
pullMethod
ではなく、デフォルトのpod
pullMethod
を使用します。node
docker キャッシュはレジストリーイメージがContainer.Image
で利用可能な場合に便利ですが、CDI インポーターはこれにアクセスすることは許可されていません。 - 4
- 利用可能なブートソースとして検出するカスタムイメージの場合、イメージの
managedDataSource
の名前が、仮想マシンテンプレート YAML ファイルのspec.dataVolumeTemplates.spec.sourceRef.name
にあるテンプレートのDataSource
の名前に一致する必要があります。
- ファイルを保存します。
10.3.2.4. ボリュームスナップショットのブートソースを有効にする リンクのコピーリンクがクリップボードにコピーされました!
オペレーティングシステムのベースイメージを保存するストレージクラスに関連付けられた StorageProfile
のパラメーターを設定して、ボリュームスナップショットのブートソースを有効にします。DataImportCron
は、元々 PVC ソースのみを維持するように設計されていましたが、特定のストレージタイプでは VolumeSnapshot
ソースの方が PVC ソースよりも拡張性に優れています。
ストレージプロファイルでは、単一のスナップショットからクローンを作成する場合により適切に拡張できることが証明されているボリュームスナップショットを使用してください。
前提条件
- オペレーティングシステムイメージを含むボリュームスナップショットにアクセスできる。
- ストレージはスナップショットをサポートしている。
-
OpenShift CLI (
oc
) がインストールされている。
手順
次のコマンドを実行して、ブートソースのプロビジョニングに使用されるストレージクラスに対応するストレージプロファイルオブジェクトを開きます。
oc edit storageprofile <storage_class>
$ oc edit storageprofile <storage_class>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
StorageProfile
のdataImportCronSourceFormat
仕様を確認して、仮想マシンがデフォルトで PVC またはボリュームスナップショットを使用しているか確認します。 必要に応じて、
dataImportCronSourceFormat
仕様をsnapshot
に更新して、ストレージプロファイルを編集します。ストレージプロファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
ブートソースのプロビジョニングに使用されるストレージクラスに対応するストレージプロファイルオブジェクトを開きます。
oc get storageprofile <storage_class> -oyaml
$ oc get storageprofile <storage_class> -oyaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
StorageProfile
のdataImportCronSourceFormat
仕様が 'snapshot' に設定されていること、およびDataImportCron
が指すDataSource
オブジェクトがボリュームスナップショットを参照していることを確認します。
これで、これらのブートソースを使用して仮想マシンを作成できるようになりました。
10.3.3. 単一ブートソースの自動更新を無効にする リンクのコピーリンクがクリップボードにコピーされました!
HyperConverged
カスタムリソース (CR) を編集することで、カスタムブートソースかシステム定義ブートソースかに関係なく、個々のブートソースの自動更新を無効にできます。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。
手順
以下のコマンドを実行して、デフォルトのエディターで
HyperConverged
CR を開きます。oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow spec.dataImportCronTemplates
フィールドを編集して、個々のブートソースの自動更新を無効にします。- カスタムブートソース
-
spec.dataImportCronTemplates
フィールドからブートソースを削除します。カスタムブートソースの自動更新はデフォルトで無効になっています。
-
- システム定義のブートソース
ブートソースを
spec.dataImportCronTemplates
に追加します。注記システム定義のブートソースの自動更新はデフォルトで有効になっていますが、これらのブートソースは追加しない限り CR にリストされません。
dataimportcrontemplate.kubevirt.io/enable
アノテーションの値を'false'
に設定します。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- ファイルを保存します。
10.3.4. ブートソースのステータスの確認 リンクのコピーリンクがクリップボードにコピーされました!
HyperConverged
カスタムリソース (CR) を表示することで、ブートソースがシステム定義であるかカスタムであるかを判断できます。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。
手順
次のコマンドを実行して、
HyperConverged
CR の内容を表示します。oc get hyperconverged kubevirt-hyperconverged -n openshift-cnv -o yaml
$ oc get hyperconverged kubevirt-hyperconverged -n openshift-cnv -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow status.dataImportCronTemplates.status
フィールドを確認して、ブートソースのステータスを確認します。-
フィールドに
commonTemplate: true
が含まれている場合、それはシステム定義のブートソースです。 -
status.dataImportCronTemplates.status
フィールドの値が{}
の場合、それはカスタムブートソースです。
-
フィールドに