第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)
    Copy to Clipboard Toggle word wrap

    クラスターで並行して実行できるデフォルトの移行数は 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) がインストールされている。
  • クラスター管理者パーミッションがある。

手順

  1. OpenShift Virtualization 4.19 に更新する前に、一時的な ClusterRole オブジェクトを作成します。以下に例を示します。

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      labels:
        rbac.authorization.k8s.io/aggregate-to-admin=true 
    1
    
      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
    Copy to Clipboard Toggle word wrap
    1
    OpenShift Virtualization を更新する前に、このクラスターロールは admin ロールに集約されます。更新プロセスでは変更されず、以前の動作が維持されます。
  2. 次のコマンドを実行して、クラスターロールマニフェストをクラスターに追加します。

    $ oc apply -f <cluster_role_file_name>.yaml
    Copy to Clipboard Toggle word wrap
  3. OpenShift Virtualization をバージョン 4.19 に更新します。
  4. 次のコマンドのいずれかを実行し、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>
      Copy to Clipboard Toggle word wrap
    • クラスターレベルでロールをバインドするには、次のコマンドを実行します。

      $ oc create clusterrolebinding kvmigrate --clusterrole=kubevirt.io:migrate --user=<first_user> --user=<second_user> --group=<group_name>
      Copy to Clipboard Toggle word wrap
  5. kubevirt.io:migrate ロールを必要なすべてのユーザーにバインドしたら、次のコマンドを実行して、一時的な ClusterRole オブジェクトを削除します。

    $ oc delete clusterrole kubevirt.io:upgrademigrate
    Copy to Clipboard Toggle word wrap

    一時的なクラスターロールを削除すると、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
    Copy to Clipboard Toggle word wrap
  • 次のコマンドのいずれかを実行し、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>
      Copy to Clipboard Toggle word wrap
    • クラスターレベルでロールをバインドするには、次のコマンドを実行します。

      $ oc create clusterrolebinding kvmigrate --clusterrole=kubevirt.io:migrate --user=<first_user> --user=<second_user> --group=<group_name>
      Copy to Clipboard Toggle word wrap

11.1.5. 仮想マシン移行のチューニング

ワークロードのタイプと移行シナリオに基づき、クラスター全体のライブマイグレーション設定を調整できます。これにより、同時に移行する仮想マシンの数、各移行に使用するネットワーク帯域幅、プロセスをキャンセルするまでに OpenShift Virtualization が移行を完了しようと試みる時間を制御できます。これらの設定は、HyperConverged カスタムリソース (CR) で行います。

ノードごとに複数の仮想マシンを同時に移行する場合は、bandwidthPerMigration 制限を設定して、大規模またはビジー状態の仮想マシンがノードのネットワーク帯域幅の大部分を使用しないようにします。デフォルトでは、bandwidthPerMigration の値は 0 で、無制限を意味します。

メモリーのダーティー率が高く、負荷の高いワークロード (データベース処理など) を実行する大規模な仮想マシンでは、移行を完了するためにより高い帯域幅が必要になります。

注記

ポストコピーモードを有効にすると、定義されたタイムアウト内に最初のプレコピーフェーズが完了しない場合にトリガーされます。ポストコピーの期間において、必要最小限のメモリーページの転送中に仮想マシン CPU はソースホスト上で一時停止します。その後、仮想マシン CPU が宛先ホスト上でアクティブになり、実行時に残りのメモリーページが宛先ノードに転送されます。これにより、転送中のパフォーマンスに影響が出る可能性があります。

ポストコピーモードは、重要なデータや不安定なネットワークで使用しないでください。

11.1.6. 一般的なライブマイグレーションタスク

次のライブマイグレーションタスクを実行できます。

11.1.7. 関連情報

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat