7.12.2.4. DataVolume の使用による PersistentVolumeClaim への仮想マシンイメージのインポート
データボリュームを使用して、仮想マシンイメージを PersistentVolumeClaim (PVC) にインポートすることができます。
仮想マシンイメージは、HTTP または HTTPS エンドポイントでホストするか、またはイメージをコンテナーディスクに組み込み、コンテナーレジストリーで保存できます。
インポートされたイメージから仮想マシンを作成するには、仮想マシンを作成する前にイメージまたはコンテナーディスクのエンドポイントを VirtualMachine
設定ファイルに指定します。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 - クラスターには、少なくとも 1 つの利用可能な PersistentVolume があります。
仮想マシンイメージをインポートするには、以下が必要です。
-
RAW、ISO、または QCOW2 形式の仮想マシンディスクイメージ (オプションで
xz
またはgz
を使用して圧縮される)。 -
イメージがデータソースにアクセスするために必要な認証情報と共にホストされる HTTP エンドポイント。例:
http://www.example.com/path/to/data
-
RAW、ISO、または QCOW2 形式の仮想マシンディスクイメージ (オプションで
コンテナーディスクをインポートするには、以下が必要である。
-
データソースにアクセスするために必要な認証情報と共に、コンテナーイメージレジストリーに保存されている仮想マシンイメージからビルドされたコンテナーディスク。例:
docker://registry.example.com/container-image
-
データソースにアクセスするために必要な認証情報と共に、コンテナーイメージレジストリーに保存されている仮想マシンイメージからビルドされたコンテナーディスク。例:
手順
オプション: データソースに認証情報が必要な場合、
endpoint-secret.yaml
ファイルを編集し、更新された設定をクラスターに適用します。apiVersion: v1 kind: Secret metadata: name: <endpoint-secret> labels: app: containerized-data-importer type: Opaque data: accessKeyId: "" 1 secretKey: "" 2
$ oc apply -f endpoint-secret.yaml
仮想マシン設定ファイルを編集し、インポートする必要のある仮想マシンイメージのデータソースを指定します。この例では、
http
ソースから Fedora イメージがインポートされます。apiVersion: kubevirt.io/v1alpha3 kind: VirtualMachine metadata: creationTimestamp: null labels: kubevirt.io/vm: vm-fedora-datavolume name: vm-fedora-datavolume spec: dataVolumeTemplates: - metadata: creationTimestamp: null name: fedora-dv spec: pvc: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: local source: http: 1 url: "https://download.fedoraproject.org/pub/fedora/linux/releases/33/Cloud/x86_64/images/Fedora-Cloud-Base-33-1.2.x86_64.qcow2" 2 secretRef: "" 3 certConfigMap: "" 4 status: {} running: true template: metadata: creationTimestamp: null labels: kubevirt.io/vm: vm-fedora-datavolume spec: domain: devices: disks: - disk: bus: virtio name: datavolumedisk1 machine: type: "" 5 resources: requests: memory: 1.5Gi terminationGracePeriodSeconds: 60 volumes: - dataVolume: name: fedora-dv name: datavolumedisk1 status: {}
- 1
- イメージのインポート元となるソースタイプ。この例では、HTTP エンドポイントを使用します。レジストリーからコンテナーディスクをインポートするには、
http
をregistry
に置き換えます。 - 2
- インポートする必要のある仮想マシンイメージのソース。この例では、HTTP エンドポイントで仮想マシンイメージを参照します。コンテナーレジストリーエンドポイントのサンプルは
url: "docker://kubevirt/fedora-cloud-container-disk-demo:latest"
です。 - 3
secretRef
パラメーターはオプションです。- 4
certConfigMap
は、自己署名証明書またはシステム CA バンドルで署名されていない証明書を使用するサーバーと通信するために必要です。参照される ConfigMap は DataVolume と同じ namespace にある必要があります。- 5
type: dataVolume
またはtype: ""
を指定します。persistentVolumeClaim
などのtype
に他の値を指定すると、警告が表示され、仮想マシンは起動しません。
仮想マシンを作成します。
$ oc create -f vm-<name>-datavolume.yaml
注記oc create
コマンドは、DataVolume および仮想マシンを作成します。CDI コントローラーは適切なアノテーションを使って基礎となる PVC を作成し、インポートプロセスが開始されます。インポートが完了すると、DataVolume のステータスはSucceeded
に変更され、仮想マシンの起動が可能になります。DataVolume のプロビジョニングはバックグランドで実行されるため、これをモニターする必要はありません。仮想マシンは起動できますが、これはインポートが完了するまで実行されません。
検証
インポーター Pod は指定された URL から仮想マシンイメージまたはコンテナーディスクをダウンロードし、これをプロビジョニングされた PV に保存します。以下のコマンドを実行してインポーター Pod のステータスを確認します。
$ oc get pods
以下のコマンドを実行し、
Succeeded
が表示されるまで DataVolume のステータスをモニターします。$ oc describe dv <datavolume-name> 1
- 1
- 仮想マシン設定ファイルの
dataVolumeTemplates.metadata.name
で指定される DataVolume の名前。上記の設定例では、これはfedora-dv
です。
プロビジョニングが完了し、VMI が起動したことを検証するには、以下のコマンドを実行してそのシリアルコンソールへのアクセスを試行します。
$ virtctl console <vm-fedora-datavolume>