第11章 ライブマイグレーション
11.1. ライブマイグレーションについて リンクのコピーリンクがクリップボードにコピーされました!
ライブマイグレーションは、仮想ワークロードに支障を与えることなく、実行中の仮想マシンをクラスター内の別のノードに移行するプロセスです。ライブマイグレーションにより、クラスターのアップグレード中や、メンテナンスや設定の変更のためにノードをドレインする必要があるときに、スムーズな移行が可能になります。
デフォルトでは、ライブマイグレーショントラフィックは Transport Layer Security (TLS) を使用して暗号化されます。
11.1.1. ライブマイグレーションの要件 リンクのコピーリンクがクリップボードにコピーされました!
ライブマイグレーションには次の要件があります。
-
クラスターには、
ReadWriteMany
(RWX) アクセスモードの共有ストレージが必要です。 クラスターには十分な RAM とネットワーク帯域幅が必要です。
注記ノードのドレインに伴うライブマイグレーションを実行できるように、クラスター内に十分なメモリーリクエスト容量があることを確認する必要があります。以下の計算を使用して、必要な予備のメモリーを把握できます。
Product of (Maximum number of nodes that can drain in parallel) and (Highest total VM memory request allocations across nodes)
Product of (Maximum number of nodes that can drain in parallel) and (Highest total VM memory request allocations across nodes)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターで並行して実行できるデフォルトの移行数は 5 です。
- 仮想マシンがホストモデル CPU を使用する場合、ノードはその CPU をサポートする必要があります。
- ライブマイグレーション用に 専用の Multus ネットワークを設定すること を強く推奨します。専用ネットワークは、移行中のテナントワークロードに対するネットワークの飽和状態の影響を最小限に抑えます。
11.1.2. ライブマイグレーションのパーミッションについて リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Virtualization 4.19 以降では、ライブマイグレーション操作は、kubevirt.io:migrate
クラスターロールが明示的に付与されたユーザーに制限されています。このロールを持つユーザーは、VirtualMachineInstanceMigration
(VMIM) カスタムリソースによって表される仮想マシン (VM) ライブマイグレーション要求を作成、削除、更新できます。
クラスター管理者は、namespace またはクラスターレベルのいずれかで、信頼できるユーザーまたはグループに kubevirt.io:migrate
ロールをバインドできます。
OpenShift Virtualization 4.19 より前では、namespace 管理者にはデフォルトでライブマイグレーションのパーミッションが与えられていました。これは、インフラストラクチャーにとって重要な移行操作に対する意図しない、または悪意のある中断を防ぐために、バージョン 4.19 で変更されました。
クラスター管理者は、更新前に一時的なクラスターロールを作成することで、古い動作を維持できます。新しいロールをユーザーに割り当てた後、より制限の厳しいパーミッションを適用するために一時的なロールを削除します。すでに更新している場合でも、kubevirt.io:migrate
ロールを admin
クラスターロールに集約することで、以前の動作に戻すことができます。
11.1.3. 更新中に 4.19 より前のライブマイグレーションのパーミッションを保持する リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Virtualization 4.19 へ更新する前に、より制限の厳しいデフォルトのパーミッションを有効にする準備ができるまで、以前のライブマイグレーションのパーミッションを保持するための一時的なクラスターロールを作成できます。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 - クラスター管理者パーミッションがある。
手順
OpenShift Virtualization 4.19 に更新する前に、一時的な
ClusterRole
オブジェクトを作成します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- OpenShift Virtualization を更新する前に、このクラスターロールは
admin
ロールに集約されます。更新プロセスでは変更されず、以前の動作が維持されます。
次のコマンドを実行して、クラスターロールマニフェストをクラスターに追加します。
oc apply -f <cluster_role_file_name>.yaml
$ oc apply -f <cluster_role_file_name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - OpenShift Virtualization をバージョン 4.19 に更新します。
次のコマンドのいずれかを実行し、
kubevirt.io:migrate
クラスターロールを信頼できるユーザーまたはグループにバインドし、<namespace>
、<first_user>
、<second_user>
、および<group_name>
を独自の値に置き換えます。namespace レベルでロールをバインドするには、次のコマンドを実行します。
oc create -n <namespace> rolebinding kvmigrate --clusterrole=kubevirt.io:migrate --user=<first_user> --user=<second_user> --group=<group_name>
$ oc create -n <namespace> rolebinding kvmigrate --clusterrole=kubevirt.io:migrate --user=<first_user> --user=<second_user> --group=<group_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターレベルでロールをバインドするには、次のコマンドを実行します。
oc create clusterrolebinding kvmigrate --clusterrole=kubevirt.io:migrate --user=<first_user> --user=<second_user> --group=<group_name>
$ oc create clusterrolebinding kvmigrate --clusterrole=kubevirt.io:migrate --user=<first_user> --user=<second_user> --group=<group_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
kubevirt.io:migrate
ロールを必要なすべてのユーザーにバインドしたら、次のコマンドを実行して、一時的なClusterRole
オブジェクトを削除します。oc delete clusterrole kubevirt.io:upgrademigrate
$ oc delete clusterrole kubevirt.io:upgrademigrate
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 一時的なクラスターロールを削除すると、
kubevirt.io:migrate
ロールを持つユーザーのみがライブマイグレーション要求を作成、削除、更新できるようになります。
11.1.4. ライブマイグレーションのパーミッションの付与 リンクのコピーリンクがクリップボードにコピーされました!
信頼できるユーザーまたはグループに、ライブマイグレーションインスタンスを作成、削除、更新するパーミッションを付与します。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 - クラスター管理者パーミッションがある。
手順
(オプション) namespace 管理者が常にライブマイグレーションを作成、削除、更新するパーミッションを持つようにデフォルトの動作を変更するには、次のコマンドを実行して、
kubevirt.io:migrate
ロールをadmin
クラスターロールに集約します。oc label --overwrite clusterrole kubevirt.io:migrate rbac.authorization.k8s.io/aggregate-to-admin=true
$ oc label --overwrite clusterrole kubevirt.io:migrate rbac.authorization.k8s.io/aggregate-to-admin=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドのいずれかを実行し、
kubevirt.io:migrate
クラスターロールを信頼できるユーザーまたはグループにバインドし、<namespace>
、<first_user>
、<second_user>
、および<group_name>
を独自の値に置き換えます。namespace レベルでロールをバインドするには、次のコマンドを実行します。
oc create -n <namespace> rolebinding kvmigrate --clusterrole=kubevirt.io:migrate --user=<first_user> --user=<second_user> --group=<group_name>
$ oc create -n <namespace> rolebinding kvmigrate --clusterrole=kubevirt.io:migrate --user=<first_user> --user=<second_user> --group=<group_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターレベルでロールをバインドするには、次のコマンドを実行します。
oc create clusterrolebinding kvmigrate --clusterrole=kubevirt.io:migrate --user=<first_user> --user=<second_user> --group=<group_name>
$ oc create clusterrolebinding kvmigrate --clusterrole=kubevirt.io:migrate --user=<first_user> --user=<second_user> --group=<group_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.1.5. 仮想マシン移行のチューニング リンクのコピーリンクがクリップボードにコピーされました!
ワークロードのタイプと移行シナリオに基づき、クラスター全体のライブマイグレーション設定を調整できます。これにより、同時に移行する仮想マシンの数、各移行に使用するネットワーク帯域幅、プロセスをキャンセルするまでに OpenShift Virtualization が移行を完了しようと試みる時間を制御できます。これらの設定は、HyperConverged
カスタムリソース (CR) で行います。
ノードごとに複数の仮想マシンを同時に移行する場合は、bandwidthPerMigration
制限を設定して、大規模またはビジー状態の仮想マシンがノードのネットワーク帯域幅の大部分を使用しないようにします。デフォルトでは、bandwidthPerMigration
の値は 0
で、無制限を意味します。
メモリーのダーティー率が高く、負荷の高いワークロード (データベース処理など) を実行する大規模な仮想マシンでは、移行を完了するためにより高い帯域幅が必要になります。
ポストコピーモードを有効にすると、定義されたタイムアウト内に最初のプレコピーフェーズが完了しない場合にトリガーされます。ポストコピーの期間において、必要最小限のメモリーページの転送中に仮想マシン CPU はソースホスト上で一時停止します。その後、仮想マシン CPU が宛先ホスト上でアクティブになり、実行時に残りのメモリーページが宛先ノードに転送されます。これにより、転送中のパフォーマンスに影響が出る可能性があります。
ポストコピーモードは、重要なデータや不安定なネットワークで使用しないでください。
11.1.6. 一般的なライブマイグレーションタスク リンクのコピーリンクがクリップボードにコピーされました!
次のライブマイグレーションタスクを実行できます。
- ライブマイグレーションの設定
- 負荷の高いワークロード向けのライブマイグレーション設定
- ライブマイグレーションの開始とキャンセル
- Red Hat OpenShift Service on AWS Web コンソールの Migration タブで、すべてのライブ移行の進行状況を監視します。
- Web コンソールの Metrics タブで仮想マシン移行メトリクスを表示する。