VM インスタンスの作成と開始

このページでは、ブートディスク イメージまたはブートディスク スナップショットを使用して仮想マシン(VM)インスタンスを作成する手順について説明します。

1 つ以上のディスクを含む VM を作成できます。作成後に VM にディスクを追加することもできます。Google Distributed Cloud(GDC)エアギャップ アプライアンスは、作成後に VM インスタンスを自動的に起動します。

起動スクリプトは、VM の作成前または作成後に追加できます。起動スクリプトの詳細については、VM インスタンスで起動スクリプトを使用するをご覧ください。

始める前に

gdcloud コマンドライン インターフェース(CLI)コマンドを使用するには、gdcloud CLI をダウンロード、インストール、構成していることを確認してください。GDC エアギャップ アプライアンスのすべてのコマンドは gdcloud または kubectl CLI を使用し、オペレーティング システム(OS)環境が必要です。

kubeconfig ファイルのパスを取得する

Management API サーバーに対してコマンドを実行するには、次のリソースがあることを確認します。

  1. Management API サーバー名を確認するか、プラットフォーム管理者(PA)にサーバー名を確認します。

  2. Management API サーバーの kubeconfig ファイルがない場合は、ログインして生成します。

  3. この手順では、パスを使用して MANAGEMENT_API_SERVER{"</var>"}} を置き換えます。

権限とアクセス権をリクエストする

このページに記載されているタスクを行うには、プロジェクトの VirtualMachine 管理者ロールが必要です。次の手順に沿って、確認するか、プロジェクト IAM 管理者に VM が存在するプロジェクトの Namespace でプロジェクト VirtualMachine 管理者(project-vm-admin)ロールを割り当ててもらいます。

GDC コンソールまたは gdcloud CLI を使用する VM オペレーションの場合は、プロジェクト IAM 管理者に、プロジェクトの VirtualMachine 管理者ロールとプロジェクト閲覧者(project-viewer)ロールの両方を割り当てるよう依頼します。

イメージから VM インスタンスを作成する

このセクションでは、GDC 提供の OS イメージまたはカスタム OS イメージから VM を作成する方法について説明します。

利用可能な GDC 提供のイメージのリストを表示する

GDC 提供のイメージを使用して VM を作成する前に、使用可能なイメージのリストを確認します。

gdcloud

使用可能なすべてのイメージとその最小ディスクサイズを一覧表示します。

gdcloud compute images list

このコマンドには、GDC 提供のイメージとカスタム イメージの両方が含まれます。vm-system Namespace のいずれかのイメージを選択します。

API

  1. 利用可能な GDC 提供のイメージをすべて一覧表示します。

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get virtualmachineimage.virtualmachine.gdc.goog --namespace vm-system
    
  2. 特定の GDC 提供イメージの minimumDiskSize を取得します。

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get virtualmachineimage.virtualmachine.gdc.goog --namespace vm-system \
        BOOT_DISK_IMAGE_NAME -ojsonpath='{.spec.minimumDiskSize}{"\n"}'
    

    次のように置き換えます。

    • MANAGEMENT_API_SERVER と Management API サーバーの kubeconfig
    • BOOT_DISK_IMAGE_NAME は、イメージの名前に置き換えます。

GDC 提供のイメージから VM インスタンスを作成する

デフォルトでは、すべての GDC プロジェクトで GDC 提供の OS イメージから VM を作成できます。

gdcloud

GDC 提供のイメージを選択して VM インスタンスを作成します。

gdcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --image=BOOT_DISK_IMAGE_NAME --image-project=vm-system \
    --boot-disk-size=BOOT_DISK_SIZE \
    --no-boot-disk-auto-delete=NO_BOOT_DISK_AUTO_DELETE

次のように置き換えます。

変数定義
VM_NAME 新しい VM の名前。名前には英数字とダッシュのみを使用でき、53 文字以下にする必要があります。
BOOT_DISK_IMAGE_NAME 新しい VM のブートディスクに使用するイメージの名前。
BOOT_DISK_SIZE ブートディスクのサイズ(20G など)。
この値は、常にブートディスク イメージの minimumDiskSize 以上である必要があります。
NO_BOOT_DISK_AUTO_DELETE true または false。VM インスタンスが削除されたときにブートディスクが自動的に削除されるかどうかの逆を示します。
MACHINE_TYPE 新しい VM の事前定義されたマシンタイプ。使用可能なマシンタイプを選択するには、次のコマンドを実行します。
gdcloud compute machine-types list

API

  1. GDC エアギャップ アプライアンスで提供されるイメージを選択して、VM インスタンスを作成します。

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        apply -n PROJECT -f - <<EOF
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineDisk
    metadata:
      name: VM_BOOT_DISK_NAME
    spec:
      source:
        image:
          name: BOOT_DISK_IMAGE_NAME
          namespace: vm-system
      size: BOOT_DISK_SIZE
    ---
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
    spec:
      compute:
        virtualMachineType: MACHINE_TYPE
      disks:
        - virtualMachineDiskRef:
            name: VM_BOOT_DISK_NAME
          boot: true
          autoDelete: BOOT_DISK_AUTO_DELETE
    EOF
    

    次のように置き換えます。

    変数定義
    MANAGEMENT_API_SERVER Management API サーバーの kubeconfig パス。
    PROJECT VM を作成する GDC エアギャップ アプライアンス プロジェクト。
    VM_NAME 新しい VM の名前。名前には英数字とダッシュのみを使用でき、53 文字以下にする必要があります。
    VM_BOOT_DISK_NAME 新しい VM ブートディスクの名前。
    BOOT_DISK_IMAGE_NAME 新しい VM のブートディスクに使用するイメージの名前。
    BOOT_DISK_SIZE ブートディスクのサイズ(20G など)。
    この値は、常にブートディスク イメージの minimumDiskSize 以上である必要があります。
    BOOT_DISK_AUTO_DELETE true または false。VM インスタンスが削除されたときにブートディスクが自動的に削除されるかどうかを示します。
    MACHINE_TYPE 新しい VM の事前定義されたマシンタイプ。使用可能なマシンタイプを選択するには、次のコマンドを実行します。
    gdcloud compute machine-types list
  2. VM が作成されたことを確認し、VM が Running 状態になるまで待ちます。Running 状態は、OS が完全に準備完了してアクセス可能であることを示すものではありません。

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get virtualmachine.virtualmachine.gdc.goog VM_NAME -n PROJECT
    

    VM_NAMEPROJECT は、VM の名前とプロジェクトに置き換えます。VM_NAME に使用できるのは英数字とダッシュのみです。

    VM インスタンスの作成に起動スクリプトを追加するには、VM インスタンスで起動スクリプトを使用するページの手順に沿って操作します。スクリプトを追加する前に、VM をシャットダウンしてください。

カスタム イメージから VM インスタンスを作成する

カスタム イメージは、自分のプロジェクトにのみ属します。カスタム イメージで VM を作成するには、まず、同じプロジェクトにカスタム イメージを作成する必要があります。

gdcloud

  1. すべてのカスタム イメージを一覧表示する:

    gdcloud compute images list --no-standard-images=true
    
  2. VM インスタンスを作成します。

    gdcloud compute instances create VM_NAME \
        --machine-type=MACHINE_TYPE \
        --image=BOOT_DISK_IMAGE_NAME \
        --boot-disk-size=BOOT_DISK_SIZE \
        --no-boot-disk-auto-delete=NO_BOOT_DISK_AUTO_DELETE
    

    次のように置き換えます。

    変数定義
    VM_NAME 新しい VM の名前。名前には英数字とダッシュのみを使用でき、53 文字以下にする必要があります。
    BOOT_DISK_IMAGE_NAME 新しい VM のブートディスクに使用するイメージの名前。
    BOOT_DISK_SIZE ブートディスクのサイズ(20G など)。
    この値は、常にブートディスク イメージの minimumDiskSize 以上である必要があります。
    NO_BOOT_DISK_AUTO_DELETE true または false。VM インスタンスが削除されたときにブートディスクが自動的に削除されるかどうかの逆を示します。
    MACHINE_TYPE 新しい VM の事前定義されたマシンタイプ。使用可能なマシンタイプを選択するには、次のコマンドを実行します。
    gdcloud compute machine-types list

API

  1. すべてのカスタム イメージを一覧表示します。

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get virtualmachineimage.virtualmachine.gdc.goog --namespace PROJECT
    

    特定のイメージの minimumDiskSize を取得して、VM インスタンスを作成します。

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get virtualmachineimage.virtualmachine.gdc.goog --namespace PROJECT \
        BOOT_DISK_IMAGE_NAME -ojsonpath='{.spec.minimumDiskSize}{"\n"}'
    

    次のように置き換えます。

    変数定義
    MANAGEMENT_API_SERVER Management API サーバーの kubeconfig パス。
    BOOT_DISK_IMAGE_NAME すべてのカスタム イメージを一覧表示するコマンドから選択したイメージの名前。
    PROJECT イメージのプロジェクト。
  2. VM インスタンスを作成します。

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        apply -n PROJECT -f - <<EOF
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineDisk
    metadata:
      name: VM_BOOT_DISK_NAME
    spec:
      source:
        image:
          name: BOOT_DISK_IMAGE_NAME
      size: BOOT_DISK_SIZE
    ---
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
    spec:
      compute:
        virtualMachineType: MACHINE_TYPE
      disks:
        - virtualMachineDiskRef:
            name: VM_BOOT_DISK_NAME
          boot: true
          autoDelete: BOOT_DISK_AUTO_DELETE
    EOF
    

    次の定義を使用して変数を置き換えます。

    変数定義
    MANAGEMENT_API_SERVER Management API サーバーの kubeconfig ファイル。
    PROJECT VM を作成する GDC エアギャップ アプライアンス プロジェクト。
    VM_NAME 新しい VM の名前。名前には英数字とダッシュのみを使用でき、53 文字以下にする必要があります。
    VM_BOOT_DISK_NAME 新しい VM ブートディスクの名前。
    BOOT_DISK_IMAGE_NAME 新しい VM のブートディスクに使用するイメージの名前。
    BOOT_DISK_SIZE ブートディスクのサイズ(20G など)。
    この値は、常にブートディスク イメージの minimumDiskSize 以上である必要があります。
    BOOT_DISK_AUTO_DELETE true または false。VM インスタンスが削除されたときにブートディスクが自動的に削除されるかどうかを示します。
    MACHINE_TYPE 新しい VM の事前定義されたマシンタイプ。使用可能なマシンタイプを選択するには、次のコマンドを実行します。
    kubectl --kubeconfig MANAGEMENT_API_SERVER get virtualmachinetype.virtualmachine.gdc.goog --namespace vm-system
  3. VM が作成されたことを確認し、VM が Running 状態になるまで待ちます。Running 状態は、OS の準備が完全に整い、アクセス可能であることを示すものではありません。

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get virtualmachine.virtualmachine.gdc.goog VM_NAME -n PROJECT
    

    VM_NAMEPROJECT は、VM の名前とプロジェクトに置き換えます。VM_NAME に使用できるのは英数字とダッシュのみです。

追加の非ブートディスクを含む VM インスタンスを作成する

VM を作成するときに、非ブートディスクを作成できます。追加する各ディスクで、イメージソースを指定するかどうかを指定できます。後者は、空のディスクを作成する場合に使用します。

gdcloud

  1. イメージからディスクを作成します。

    gdcloud compute disks create NON_BOOT_DISK_FROM_IMAGE \
        --size=NON_BOOT_DISK_SIZE \
        --image=NON_BOOT_DISK_IMAGE_NAME \
        --image-project=NON_BOOT_DISK_IMAGE_NAMESPACE
    
  2. 空白のイメージからディスクを作成します。

    gdcloud compute disks create NON_BOOT_BLANK_DISK \
        --size=NON_BOOT_BLANK_DISK_SIZE \
    
  3. 前の手順のディスクを使用してインスタンスを作成します。

    gdcloud compute instances create VM_NAME \
        --machine-type=MACHINE_TYPE \
        --image=BOOT_DISK_IMAGE_NAME --image-project=vm-system \
        --boot-disk-size=BOOT_DISK_SIZE \
        --no-boot-disk-auto-delete=NO_BOOT_DISK_AUTO_DELETE \
        --disk=name=NON_BOOT_DISK_FROM_IMAGE \
        --disk=name=NON_BOOT_BLANK_DISK
    

    次のように置き換えます。

    変数定義
    VM_NAME 新しい VM の名前。名前には英数字とダッシュのみを使用でき、53 文字以下にする必要があります。
    BOOT_DISK_IMAGE_NAME 新しい VM のブートディスクに使用するイメージの名前。
    BOOT_DISK_IMAGE_NAMESPACE 新しい VM ブートディスクに使用するイメージの名前空間。GDC 提供のイメージの場合は vm-system を使用し、カスタム イメージの場合はフィールドを空白のままにします。
    BOOT_DISK_SIZE ブートディスクのサイズ(20G など)。
    この値は、常にブートディスク イメージの minimumDiskSize 以上である必要があります。
    NO_BOOT_DISK_AUTO_DELETE true または false。VM インスタンスが削除されたときにブートディスクが自動的に削除されるかどうかの逆を示します。
    MACHINE_TYPE 新しい VM の事前定義されたマシンタイプ。使用可能なマシンタイプを選択するには、次のコマンドを実行します。
    gdcloud compute machine-types list

    追加のディスクの場合は、次のように置き換えます。

    • NON_BOOT_DISK_FROM_IMAGENON_BOOT_BLANK_DISK: 追加ディスクの名前。
    • NON_BOOT_DISK_SIZENON_BOOT_BLANK_DISK_SIZE: 追加ディスクのサイズ(例: 20G)。
    • NON_BOOT_DISK_IMAGE_NAME: 非ブートディスクとして使用するイメージの名前。
    • NON_BOOT_DISK_IMAGE_NAMESPACE: 非ブートディスクとして使用するイメージの Namespace。GDC 提供のイメージの場合は vm-system を使用し、カスタム イメージの場合はフィールドを空白のままにします。

API

  1. 非ブートディスクを含む VM を作成します。
kubectl --kubeconfig MANAGEMENT_API_SERVER \
    apply -n PROJECT -f - <<EOF
apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachineDisk
metadata:
  name: NON_BOOT_DISK_FROM_IMAGE
spec:
  source:
    image:
      name: NON_BOOT_DISK_IMAGE_NAME
      namespace: NON_BOOT_DISK_IMAGE_NAMESPACE
  size: NON_BOOT_DISK_SIZE
---
apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachineDisk
metadata:
  name: NON_BOOT_BLANK_DISK
spec:
  size: NON_BOOT_BLANK_DISK_SIZE
---
apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachineDisk
metadata:
  name: VM_BOOT_DISK_NAME
spec:
  source:
    image:
      name: BOOT_DISK_IMAGE_NAME
      namespace: BOOT_DISK_IMAGE_NAMESPACE
  size: BOOT_DISK_SIZE
---
apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachine
metadata:
  name: VM_NAME
spec:
  compute:
    virtualMachineType: MACHINE_TYPE
  disks:
    - virtualMachineDiskRef:
        name: VM_BOOT_DISK_NAME
      boot: true
      autoDelete: BOOT_DISK_AUTO_DELETE
    - virtualMachineDiskRef:
        name: NON_BOOT_DISK_FROM_IMAGE
    - virtualMachineDiskRef:
        name: NON_BOOT_BLANK_DISK
EOF

次のように置き換えます。

変数定義
MANAGEMENT_API_SERVER Management API サーバーの kubeconfig パス。
PROJECT VM を作成する GDC プロジェクト。
VM_NAME 新しい VM の名前。名前には英数字とダッシュのみを使用でき、53 文字以下にする必要があります。
VM_BOOT_DISK_NAME 新しい VM ブートディスクの名前。
BOOT_DISK_IMAGE_NAME 新しい VM のブートディスクに使用するイメージの名前。
BOOT_DISK_IMAGE_NAMESPACE 新しい VM ブートディスクに使用するイメージの名前空間。GDC 提供のイメージの場合は名前空間 vm-system を使用し、カスタム イメージの場合は空白にします。
BOOT_DISK_SIZE ブートディスクのサイズ(20G など)。
この値は、常にブートディスク イメージの minimumDiskSize 以上である必要があります。
BOOT_DISK_AUTO_DELETE true または false。VM インスタンスが削除されたときにブートディスクが自動的に削除されるかどうかを示します。
MACHINE_TYPE 新しい VM の事前定義されたマシンタイプ。使用可能なマシンタイプを選択するには、次のコマンドを実行します。
kubectl --kubeconfig MANAGEMENT_API_SERVER get virtualmachinetype.virtualmachine.gdc.goog --namespace vm-system

追加のディスクの場合は、次のように置き換えます。

  • NON_BOOT_DISK_FROM_IMAGENON_BOOT_BLANK_DISK: 追加ディスクの名前。
  • NON_BOOT_DISK_SIZENON_BOOT_BLANK_DISK_SIZE: 追加ディスクのサイズ(例: 20G)。
  • NON_BOOT_DISK_IMAGE_NAME: 非ブートディスクとして使用するイメージの名前。
  • NON_BOOT_DISK_IMAGE_NAMESPACE: 非ブートディスクとして使用するイメージの Namespace。GDC 提供のイメージの場合は名前空間 vm-system を使用し、カスタム イメージの場合は空白にします。

ディスクを使用する前に、ディスクをフォーマットしてマウントします。

スナップショットまたはバックアップから VM を作成する

次の方法で、スナップショットから新しい VM を作成できます。

  • VM ブートディスクを復元する: スナップショットで VM のブートディスクをバックアップした場合は、そのスナップショットを使用して新しい VM を作成します。スナップショットを復元するをご覧ください。
  • 非ブートディスクを復元する: スナップショットで非ブートディスクをバックアップしている場合は、同じ手順で VM を作成する際にスナップショットを新しい非ブートディスクに復元することもできます。

同じブートディスクを使用して複数の VM を作成する手順は次のとおりです。

  1. カスタム イメージを作成する
  2. スナップショットを使用せずに、そのイメージから VM を作成します。

マシンタイプを使用せずに VM を作成する

GDC エアギャップ アプライアンスは、VM インスタンスの作成時に使用できる事前定義されたマシンタイプを提供します。事前定義されたマシンタイプには、vCPU の数とメモリ容量がプリセットされています。

事前定義された VM がニーズに合わない場合は、カスタムの仮想ハードウェア設定を使用して VM インスタンスを作成します。

カスタム VM は、次のようなシナリオに適しています。

  • 事前定義された VM タイプに適用できないワークロード。
  • 処理能力やメモリがさらに必要だが、次のレベルのマシンタイプで提供されるアップグレードをすべては必要としないワークロード。

gdcloud

  1. 定義したマシンタイプを使用して VM を作成します。

    gdcloud compute instances create VM_NAME \
        --custom-cpu=NUM_VCPU \
        --custom-memory=MEMORY
        --image=BOOT_DISK_IMAGE_NAME --image-project=vm-system \
        --boot-disk-size=BOOT_DISK_SIZE \
        --no-boot-disk-auto-delete=NO_BOOT_DISK_AUTO_DELETE
    

    次のように置き換えます。

    変数定義
    VM_NAME 新しい VM の名前。名前には英数字とダッシュのみを使用でき、53 文字以下にする必要があります。
    BOOT_DISK_IMAGE_NAME 新しい VM のブートディスクに使用するイメージの名前。
    BOOT_DISK_SIZE ブートディスクのサイズ(20G など)。
    この値は、常にブートディスク イメージの minimumDiskSize 以上である必要があります。
    NO_BOOT_DISK_AUTO_DELETE true または false。VM インスタンスが削除されたときにブートディスクが自動的に削除されるかどうかの逆を示します。
    NUM_VCPU vCPU の数。サポートされている vCPU の最大数は 192 です。
    MEMORY メモリサイズ(8G など)。最大メモリサイズは 1 テラバイト(TB)です。

API

  1. 定義したマシンタイプを使用して VM を作成します。

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        apply -n PROJECT -f - <<EOF
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineDisk
    metadata:
      name: VM_BOOT_DISK_NAME
    spec:
      source:
        image:
          name: BOOT_DISK_IMAGE_NAME
          namespace: vm-system
      size: BOOT_DISK_SIZE
    ---
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
    spec:
      compute:
        vcpus: NUM_VCPU
        memory: MEMORY
      disks:
        - virtualMachineDiskRef:
            name: VM_BOOT_DISK_NAME
          boot: true
          autoDelete: BOOT_DISK_AUTO_DELETE
    EOF
    

    次のように置き換えます。

    変数定義
    MANAGEMENT_API_SERVER Management API サーバーの kubeconfig パス。
    PROJECT VM を作成する GDC エアギャップ アプライアンス プロジェクト。
    VM_NAME 新しい VM の名前。名前には英数字とダッシュのみを使用でき、53 文字以下にする必要があります。
    VM_BOOT_DISK_NAME 新しい VM ブートディスクの名前。
    BOOT_DISK_IMAGE_NAME 新しい VM のブートディスクに使用するイメージの名前。
    BOOT_DISK_SIZE ブートディスクのサイズ(20G など)。
    この値は、常にブートディスク イメージの minimumDiskSize 以上である必要があります。
    BOOT_DISK_AUTO_DELETE true または false。VM インスタンスが削除されたときにブートディスクが自動的に削除されるかどうかを示します。
    NUM_VCPU vCPU の数。サポートされている vCPU の最大数は 192 です。
    MEMORY メモリサイズ(8G など)。最大メモリサイズは 1 TB です。