Skip to content

Awanio CEP から Cockpit への VM 移行

Vapor Web UI を使用した移行の実行(docker-compose を使用しない場合)

Docker Compose のコマンドラインツールを使用せずに、Vapor Web UI からコンテナ化された移行ユーティリティを直接設定および実行できます。

1. コンテナの設定

Vapor Web UIDocker タブを開き、Containers を選択して + Create Container をクリックし、コンテナ作成画面を開きます。以下の設定を行ってください。

  • Name: kvirt2virt
  • Image: r.awan.app/library/tools/kvirt2virt:v1.0.4
  • Network: ネットワークを host に変更します(これにより、コンテナ内の libvirt ツールがローカルネットワークドメインおよびハイパーバイザーのソケットインターフェースへアクセスできるようになります)。
  • Advanced Options:
    • Privileged Mode を有効にします(システムの仮想化およびストレージバックエンドへアクセスするために必要です)。
    • Allocate Pseudo-TTY (-t) を有効にします(対話形式のプロンプトを使用するために必要です)。
    • Keep STDIN Open (-i) を有効にします(対話形式のプロンプトを使用するために必要です)。
  • Volumes (Bind Mounts): ホストのパスをコンテナ内へマウントします(必要に応じて bind タイプおよび rslave の propagation を設定してください)。使用する Docker のインストール方法に応じて、適切なソースパスを選択してください。
Option A: Standard Docker(Debian 系、RHEL、または公式 Docker CE など)

ノードでネイティブパッケージ(例: Debian の apt-get install docker-ce)からインストールされた標準的な Docker デーモンを使用している場合は、以下のホストパスを使用してください。

  1. Libvirt Socket: Source /var/run/libvirt ➔ Target /var/run/libvirt (Type bind, Propagation rslave)
  2. KubeVirt Pod Disk Storage: Source /var/lib/kubelet ➔ Target /var/lib/kubelet (Type bind, Propagation rslave)
  3. Local VM Images Pool: Source /var/lib/libvirt/images ➔ Target /var/lib/libvirt/images (Type bind, Propagation rslave)
  4. Host Kubeconfig Configuration: Source /root/.kube ➔ Target /root/.kube (Type bind)
Option B: Snap-confined Docker(Ubuntu Snap 版 Docker など)

Ubuntu Snap 版の Docker を使用している場合、Docker デーモンは分離されたマウントネームスペース内で動作するため、/var/lib/kubelet および /var/run/libvirt に直接アクセスできません。以下の手順を実行してください。

  1. ホストマシンで以下のコマンドを実行し、共有ループバックマウントを作成します。

    bash
    # Expose kubelet storage:
    sudo mkdir -p /var/snap/docker/common/kubelet
    sudo mount --bind /var/lib/kubelet /var/snap/docker/common/kubelet
    
    # Expose libvirt daemon socket:
    sudo mkdir -p /var/snap/docker/common/libvirt
    sudo mount --bind /var/run/libvirt /var/snap/docker/common/libvirt

    (これらのマウントを再起動後も維持するには、/etc/fstab に追加してください。)

  2. Vapor Web UI で、公開した Snap パスを使用してボリュームを設定します。

    1. Libvirt Socket: Source /var/snap/docker/common/libvirt ➔ Target /var/run/libvirt (Type bind, Propagation rslave)
    2. KubeVirt Pod Disk Storage: Source /var/snap/docker/common/kubelet ➔ Target /var/lib/kubelet (Type bind, Propagation rslave)
    3. Local VM Images Pool: Source /var/snap/docker/common/var/lib/libvirt/images ➔ Target /var/lib/libvirt/images (Type bind, Propagation rslave)
    4. Host Kubeconfig Configuration: Source /home/awanio/.kube ➔ Target /root/.kube (Type bind)

Create Container をクリックすると、コンテナデーモンがバックグラウンドで作成および起動されます。

2. Web Terminal から移行を実行する

コンテナのステータスが一覧で running と表示されたら、以下の手順を実行します。

  1. コンテナのアクションメニューを開き、Terminal を選択して Container Terminal Modal を表示します。

  2. Web ターミナルで以下のコマンドを実行します。

    bash
    migrate -i

    対話形式のウィザードが起動し、対象の VMI、ターゲット VM 名、ストレージプール、ネットワーク、および必要に応じて kubeconfig の貼り付けを行うことができます。

  3. または、以下の非対話モードのコマンドを実行することもできます。

    bash
    migrate --vmi-name cirros-vm --namespace default --storage-pool default --target-name my-vm-copy

出力モード

Default Mode

デフォルトでは、スクリプトは quiet モードで実行され、VM の情報、コピー/変換処理中のリアルタイムの進行状況、および最終的な成功ステータスのみが表示されます。

text
Migrating VM 'default/cirros-vm' to host VM 'my-cirros-copy'...
  Progress: [========================================] 100.0% (16MB / 16MB)
  Progress: [========================================] 100.0%
SUCCESS: VM 'my-cirros-copy' restored and is now running on host. (1.17s)

Verbose Mode

--verbose オプションを指定して実行すると、すべての診断ログ、XML の変換処理、CPU モデルのパッチ処理、および移行時に実行されるバイナリパッチの詳細が出力されます。