Awanio CEP から Cockpit への VM 移行
Vapor Web UI を使用した移行の実行(docker-compose を使用しない場合)
Docker Compose のコマンドラインツールを使用せずに、Vapor Web UI からコンテナ化された移行ユーティリティを直接設定および実行できます。
1. コンテナの設定
Vapor Web UI で Docker タブを開き、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 デーモンを使用している場合は、以下のホストパスを使用してください。
- Libvirt Socket: Source
/var/run/libvirt➔ Target/var/run/libvirt(Typebind, Propagationrslave) - KubeVirt Pod Disk Storage: Source
/var/lib/kubelet➔ Target/var/lib/kubelet(Typebind, Propagationrslave) - Local VM Images Pool: Source
/var/lib/libvirt/images➔ Target/var/lib/libvirt/images(Typebind, Propagationrslave) - Host Kubeconfig Configuration: Source
/root/.kube➔ Target/root/.kube(Typebind)
Option B: Snap-confined Docker(Ubuntu Snap 版 Docker など)
Ubuntu Snap 版の Docker を使用している場合、Docker デーモンは分離されたマウントネームスペース内で動作するため、/var/lib/kubelet および /var/run/libvirt に直接アクセスできません。以下の手順を実行してください。
ホストマシンで以下のコマンドを実行し、共有ループバックマウントを作成します。
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に追加してください。)Vapor Web UI で、公開した Snap パスを使用してボリュームを設定します。
- Libvirt Socket: Source
/var/snap/docker/common/libvirt➔ Target/var/run/libvirt(Typebind, Propagationrslave) - KubeVirt Pod Disk Storage: Source
/var/snap/docker/common/kubelet➔ Target/var/lib/kubelet(Typebind, Propagationrslave) - Local VM Images Pool: Source
/var/snap/docker/common/var/lib/libvirt/images➔ Target/var/lib/libvirt/images(Typebind, Propagationrslave) - Host Kubeconfig Configuration: Source
/home/awanio/.kube➔ Target/root/.kube(Typebind)
- Libvirt Socket: Source
Create Container をクリックすると、コンテナデーモンがバックグラウンドで作成および起動されます。
2. Web Terminal から移行を実行する
コンテナのステータスが一覧で running と表示されたら、以下の手順を実行します。
コンテナのアクションメニューを開き、Terminal を選択して Container Terminal Modal を表示します。
Web ターミナルで以下のコマンドを実行します。
bashmigrate -i対話形式のウィザードが起動し、対象の VMI、ターゲット VM 名、ストレージプール、ネットワーク、および必要に応じて kubeconfig の貼り付けを行うことができます。
または、以下の非対話モードのコマンドを実行することもできます。
bashmigrate --vmi-name cirros-vm --namespace default --storage-pool default --target-name my-vm-copy
出力モード
Default Mode
デフォルトでは、スクリプトは quiet モードで実行され、VM の情報、コピー/変換処理中のリアルタイムの進行状況、および最終的な成功ステータスのみが表示されます。
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 モデルのパッチ処理、および移行時に実行されるバイナリパッチの詳細が出力されます。