GKE on Bare Metal で ISO イメージから Windows VM を作成する

このドキュメントでは、Google Distributed Cloud で VM Runtime を使用して ISO から起動する Windows 仮想マシン(VM)を作成する方法について説明します。VM が起動したら、Windows 設定作業を手動で行います。

また、HTTP ソースを使用するか、Cloud Storage から、準備したディスク イメージで Windows VM を作成することもできます。

始める前に

このドキュメントの内容を実施するには、次のリソースへのアクセス権が必要です。

ISO イメージの仮想ディスクを作成する

Windows VM を作成するには、このドキュメントの手順と各セクションを順に実施してください。

Windows ISO イメージから起動するには、まず cdromdiskTypeVirtualMachineDisk を作成します。このディスクのソースには Windows ISO を使用します。

  1. 任意のエディタで、VirtualMachineDisk マニフェスト(windows-iso.yaml など)を作成します。

    nano windows-iso.yaml
    
  2. 次の YAML マニフェストをコピーして貼り付けます。

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: windows-iso
    spec:
      source:
        http:
          url: IMG_URL
      size: 10Gi
      diskType: cdrom
    

    IMG_URL は、Windows ISO への HTTP パスに置き換えます。Cloud Storage から ISO をインポートするために認証情報を作成して使用することもできます。

  3. マニフェストをエディタに保存して閉じます。

  4. kubectl を使用して VirtualMachineDisk を作成します。

    kubectl apply -f windows-iso.yaml
    

VM ドライバのディスクを作成する

Windows ISO から正常に起動してインストール プロセスを完了するには、VM が virtio ドライバにアクセスできる必要があります。VM に virtio ドライバを提供するには、次の手順を完了します。

  1. 任意のエディタで、VirtualMachineDisk マニフェスト(virtio-driver.yaml など)を作成します。

    nano virtio-driver.yaml
    
  2. 次の YAML マニフェストをコピーして貼り付けます。

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: virtio-driver
    spec:
      size: 1Gi
      source:
        registry:
          url: docker://quay.io/kubevirt/virtio-container-disk:latest
      diskType: cdrom
    

    このマニフェストは最新の virtio ドライバを公開 Docker リポジトリから pull し、diskTypecdrom として設定します。VM は、このディスクをインストール プロセス中に使用します。

  3. マニフェストをエディタに保存して閉じます。

  4. kubectl を使用して VirtualMachineDisk を作成します。

    kubectl apply -f virtio-driver.yaml
    

Windows VM を作成する

Windows ISO VirtualMachineDisk から起動し、virtio ドライバ ディスクをアタッチする VM を作成します。

  1. 任意のエディタで、ブート ボリュームの VirtualMachineDisk と、VirtualMachine を定義するマニフェスト(windows-vm.yaml など)を作成します。

    nano windows-vm.yaml
    
  2. 次の YAML マニフェストをコピーして貼り付けます。

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: VM_NAME-boot-dv
    spec:
      size: 100Gi
    ---
    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
    spec:
      osType: Windows
      disks:
        - virtualMachineDiskName: VM_NAME-boot-dv
          boot: true
        - virtualMachineDiskName: windows-iso
        - virtualMachineDiskName: virtio-driver
      compute:
        cpu:
          vcpus: 2
        memory:
          capacity: 4Gi
      interfaces:
        - name: eth0
          networkName: pod-network
    

    VM_NAME は、VM に付ける名前に置き換えます。

    このマニフェストによって、100 ギビバイト(GiB)のブート ボリュームが作成されます。このブート ボリュームは空のため、VM の起動時に CD-ROM デバイスとして ISO から起動され、セットアップ処理が開始されます。virtio ドライバもアタッチされ、インストール プロセスが完了します。

  3. マニフェストをエディタに保存して閉じます。

  4. kubectl を使用して VirtualMachineDiskVirtualMachine を作成します。

    kubectl apply -f windows-vm.yaml
    

Windows VM に接続して OS のインストールを完了する

VM が起動し、前のセクションの Windows ISO から起動します。VM に接続して Windows のインストール プロセスを完了し、VM を構成します。

  1. Windows VM に接続します。

    kubectl virt vnc VM_NAME
    

    VM_NAME は、Windows VM の名前に置き換えます。

    プロンプトが表示されたら、VM の Windows ゲスト OS ユーザー認証情報を入力します。

    kubectl virt vnc を使用した VM への接続について詳しくは、VNC を使用して直接接続するをご覧ください。

  2. Windows セットアップでは、[カスタム インストール] の実行を選択します。

  3. [ドライバの読み込み] を選択し、virtio ディスクの viostor ディレクトリを参照して、インストールする Windows のバージョンと一致するディレクトリを選択します。

    詳細については、KubeVirt Windows virtio ドライバをご覧ください。

  4. virtio のストレージとネットワーク ドライバが利用可能になったら、残りの Windows インストール プロセスを完了します。

    Remote Desktop Protocol を有効にして、インストール後に VM に直接接続できるようにすることをおすすめします。

ISO イメージとドライバ ディスクを切断する

Windows のインストールが完了したら、VM から virtio ドライバのディスクと Windows ISO イメージを削除します。

  1. Windows VM を停止します。

    kubectl virt stop VM_NAME
    

    VM_NAME は、Windows VM の名前に置き換えます。

  2. kubectl を使用して VM を編集します。

    kubectl edit gvm VM_NAME
    

    VM_NAME は、Windows VM の名前に置き換えます。

  3. エディタで、次の例に示すとおりに、spec.disks セクションを更新して Windows ISO と virtio ディスクを削除します。VM にアタッチされたディスクは、VM_NAME-boot-dv だけになります。

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: windows-vm
    spec:
      osType: Windows
      disks:
        - virtualMachineDiskName: windows-vm-boot-dv
          boot: true
      interfaces:
    ...
    
  4. VM マニフェストを保存して閉じます。

  5. Windows VM を起動します。

    kubectl virt start VM_NAME
    

    VM_NAME は、Windows VM の名前に置き換えます。

  6. VM の STATUS を確認します。

    kubectl get gvm VM_NAME
    

    VM_NAME は、Windows VM の名前に置き換えます。

    VM が Running 状態であることを確認します。VM が Running 状態でない場合は、VirtualMachine リソース マニフェストを確認して、Windows ISO ディスクと virtio ディスクのみが削除されたことを確認します。VM の起動に十分なコンピューティング リソースがホストにあることを確認します。

次のステップ