10.2. ライブマイグレーションの設定
ライブマイグレーション設定を行い、移行プロセスがクラスターに負荷を与えないようにすることができます。
ライブマイグレーションポリシーを設定して、さまざまな移行設定を仮想マシンのグループに適用できます。
10.2.1. ライブマイグレーション設定 リンクのコピーリンクがクリップボードにコピーされました!
次のライブマイグレーション設定を設定できます。
10.2.1.1. ライブマイグレーションの制限およびタイムアウトの設定 リンクのコピーリンクがクリップボードにコピーされました!
openshift-cnv namespace にある HyperConverged カスタムリソース (CR) を更新して、クラスターのライブマイグレーションの制限およびタイムアウトを設定します。
手順
HyperConvergedCR を編集し、必要なライブマイグレーションパラメーターを追加します。$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv設定ファイルのサンプル
apiVersion: hco.kubevirt.io/v1beta1 kind: HyperConverged metadata: name: kubevirt-hyperconverged namespace: openshift-cnv spec: liveMigrationConfig: bandwidthPerMigration: 64Mi1 completionTimeoutPerGiB: 8002 parallelMigrationsPerCluster: 53 parallelOutboundMigrationsPerNode: 24 progressTimeout: 1505 - 1
- 各マイグレーションの帯域幅制限。値は 1 秒あたりのバイト数です。たとえば、値
2048Miは 2048 MiB/s を意味します。デフォルト:0(無制限)。 - 2
- 移行がこの時間内に終了しない場合 (単位はメモリーの GiB あたりの秒数)、移行は取り消されます。たとえば、6 GiB メモリーを搭載した仮想マシンは、4800 秒以内に移行が完了しないとタイムアウトになります。
Migration MethodがBlockMigrationの場合、移行するディスクのサイズは計算に含められます。 - 3
- クラスターで並行して実行される移行の数。デフォルトは
5です。 - 4
- ノードごとのアウトバウンド移行の最大数。デフォルトは
2です。 - 5
- メモリーのコピーの進捗がこの時間内 (秒単位) に見られない場合に、移行は取り消されます。デフォルトは
150です。
キー/値のペアを削除し、ファイルを保存して、spec.liveMigrationConfig フィールドのデフォルト値を復元できます。たとえば、progressTimeout: <value> を削除してデフォルトの progressTimeout: 150 を復元します。
10.2.2. ライブマイグレーションポリシー リンクのコピーリンクがクリップボードにコピーされました!
ライブマイグレーションポリシーを作成して、仮想マシンまたはプロジェクトラベルによって定義された仮想マシンのグループにさまざまな移行設定を適用できます。
Web コンソール を使用してライブマイグレーションポリシーを作成できます。
10.2.2.1. コマンドラインを使用したライブマイグレーションポリシーの作成 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインを使用してライブマイグレーションポリシーを作成できます。KubeVirt は、任意のラベルの組み合わせを使用して、選択した仮想マシン (VM) にライブマイグレーションポリシーを適用します。
-
size、os、gpuなどの仮想マシンラベル -
priority、bandwidth、またはhpc-workloadなどのプロジェクトラベル
ポリシーを特定の仮想マシングループに適用するには、仮想マシングループのすべてのラベルがポリシーのラベルと一致する必要があります。
複数のライブマイグレーションポリシーが仮想マシンに適用される場合は、一致するラベルの数が最も多いポリシーが優先されます。
複数のポリシーがこの基準を満たす場合、ポリシーは一致するラベルキーのアルファベット順に並べ替えられ、その順序の最初のポリシーが優先されます。
手順
ライブマイグレーションポリシーを適用する仮想マシンオブジェクトを編集し、対応する仮想マシンラベルを追加します。
リソースの YAML 設定を開きます。
$ oc edit vm <vm_name>設定の
.spec.template.metadata.labelsセクションで必要なラベル値を調整します。たとえば、移行ポリシーの目的で仮想マシンをproduction仮想マシンとしてマークするには、kubevirt.io/environment: production行を追加します。apiVersion: migrations.kubevirt.io/v1alpha1 kind: VirtualMachine metadata: name: <vm_name> namespace: default labels: app: my-app environment: production spec: template: metadata: labels: kubevirt.io/domain: <vm_name> kubevirt.io/size: large kubevirt.io/environment: production # ...- 設定を保存して終了します。
対応するラベルを使用して
MigrationPolicyオブジェクトを設定します。次の例では、productionというラベルが付けられたすべての仮想マシンに適用されるポリシーを設定します。apiVersion: migrations.kubevirt.io/v1alpha1 kind: MigrationPolicy metadata: name: <migration_policy> spec: selectors: namespaceSelector:1 hpc-workloads: "True" xyz-workloads-type: "" virtualMachineInstanceSelector:2 kubevirt.io/environment: "production"次のコマンドを実行して、移行ポリシーを作成します。
$ oc create -f <migration_policy>.yaml