第12章 ライブマイグレーション
12.1. ライブマイグレーションについて リンクのコピーリンクがクリップボードにコピーされました!
ライブマイグレーションは、仮想ワークロードに支障を与えることなく、実行中の仮想マシンをクラスター内の別のノードに移行するプロセスです。ライブマイグレーションにより、クラスターのアップグレード中や、メンテナンスや設定の変更のためにノードの drain (Pod の退避) を実行する必要があるときに、スムーズな移行が可能になります。
デフォルトでは、ライブマイグレーショントラフィックは Transport Layer Security (TLS) を使用して暗号化されます。
12.1.1. ライブマイグレーションの要件 リンクのコピーリンクがクリップボードにコピーされました!
ライブマイグレーションには次の要件があります。
-
クラスターには、
ReadWriteMany(RWX) アクセスモードの共有ストレージが必要です。 クラスターには十分な RAM とネットワーク帯域幅が必要です。
注記ノードの drain に伴うライブマイグレーションを実行できるように、クラスター内に十分なメモリーリクエスト容量があることを確認する必要があります。以下の計算を使用して、必要な予備のメモリーを把握できます。
Product of (Maximum number of nodes that can drain in parallel) and (Highest total VM memory request allocations across nodes)クラスターで並行して実行できるデフォルトの移行数は 5 です。
- 仮想マシンがホストモデル CPU を使用する場合、ノードはその CPU をサポートする必要があります。
- ライブマイグレーション用に 専用の Multus ネットワークを設定すること を強く推奨します。専用ネットワークは、移行中のテナントワークロードに対するネットワークの飽和状態の影響を最小限に抑えます。
12.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 クラスターロールに集約することで、以前の動作に戻すことができます。
12.1.3. 更新中に 4.19 より前のライブマイグレーションのパーミッションを保持する リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Virtualization 4.19 へ更新する前に、より制限の厳しいデフォルトのパーミッションを有効にする準備ができるまで、以前のライブマイグレーションのパーミッションを保持するための一時的なクラスターロールを作成できます。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 - クラスター管理者の権限がある。
手順
OpenShift Virtualization 4.19 に更新する前に、一時的な
ClusterRoleオブジェクトを作成します。以下に例を示します。apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: labels: rbac.authorization.k8s.io/aggregate-to-admin=true1 name: kubevirt.io:upgrademigrate rules: - apiGroups: - subresources.kubevirt.io resources: - virtualmachines/migrate verbs: - update - apiGroups: - kubevirt.io resources: - virtualmachineinstancemigrations verbs: - get - delete - create - update - patch - list - watch - deletecollection- 1
- OpenShift Virtualization を更新する前に、このクラスターロールは
adminロールに集約されます。更新プロセスでは変更されず、以前の動作が維持されます。
次のコマンドを実行して、クラスターロールマニフェストをクラスターに追加します。
$ oc apply -f <cluster_role_file_name>.yaml- 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 clusterrolebinding kvmigrate --clusterrole=kubevirt.io:migrate --user=<first_user> --user=<second_user> --group=<group_name>
kubevirt.io:migrateロールを必要なすべてのユーザーにバインドしたら、次のコマンドを実行して、一時的なClusterRoleオブジェクトを削除します。$ oc delete clusterrole kubevirt.io:upgrademigrate一時的なクラスターロールを削除すると、
kubevirt.io:migrateロールを持つユーザーのみがライブマイグレーション要求を作成、削除、更新できるようになります。
12.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次のコマンドのいずれかを実行し、
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 clusterrolebinding kvmigrate --clusterrole=kubevirt.io:migrate --user=<first_user> --user=<second_user> --group=<group_name>
12.1.5. 仮想マシン移行のチューニング リンクのコピーリンクがクリップボードにコピーされました!
ワークロードのタイプと移行シナリオに基づき、クラスター全体のライブマイグレーション設定を調整できます。これにより、同時に移行する仮想マシンの数、各移行に使用するネットワーク帯域幅、プロセスをキャンセルするまでに OpenShift Virtualization が移行を完了しようと試みる時間を制御できます。これらの設定は、HyperConverged カスタムリソース (CR) で行います。
ノードごとに複数の仮想マシンを同時に移行する場合は、bandwidthPerMigration 制限を設定して、大規模またはビジー状態の仮想マシンがノードのネットワーク帯域幅の大部分を使用しないようにします。デフォルトでは、bandwidthPerMigration の値は 0 で、無制限を意味します。
メモリーのダーティー率が高く、負荷の高いワークロード (データベース処理など) を実行する大規模な仮想マシンでは、移行を完了するためにより高い帯域幅が必要になります。
ポストコピーモードを有効にすると、定義されたタイムアウト内に最初のプレコピーフェーズが完了しない場合にトリガーされます。ポストコピーの期間において、必要最小限のメモリーページの転送中に仮想マシン CPU はソースホスト上で一時停止します。その後、仮想マシン CPU が宛先ホスト上でアクティブになり、実行時に残りのメモリーページが宛先ノードに転送されます。これにより、転送中のパフォーマンスに影響が出る可能性があります。
ポストコピーモードは、重要なデータや不安定なネットワークで使用しないでください。
12.1.6. 一般的なライブマイグレーションタスク リンクのコピーリンクがクリップボードにコピーされました!
次のライブマイグレーションタスクを実行できます。
- ライブマイグレーションの設定
- 負荷の高いワークロード向けのライブマイグレーション設定
- ライブマイグレーションの開始とキャンセル
- OpenShift Container Platform Web コンソールの Migration タブで、すべてのライブマイグレーションの進行状況を監視します。
- Web コンソールの Metrics タブで仮想マシン移行メトリクスを表示する。