建立並啟動 VM 執行個體

本頁面說明如何使用開機磁碟映像檔或開機磁碟快照建立虛擬機器 (VM) 執行個體。

您可以建立具有一或多個磁碟的 VM。您也可以在建立 VM 後新增磁碟。Google Distributed Cloud (GDC) 實體隔離設備會在建立 VM 執行個體後自動啟動。

您可以在建立 VM 前後新增啟動指令碼。如要進一步瞭解啟動指令碼,請參閱「搭配 VM 執行個體使用啟動指令碼」頁面。

事前準備

如要使用 gdcloud 指令列介面 (CLI) 指令,請務必下載、安裝及設定 gdcloud CLI。GDC 氣隙裝置的所有指令都使用 gdcloudkubectl CLI,且需要作業系統 (OS) 環境。

取得 kubeconfig 檔案路徑

如要對 Management API 伺服器執行指令,請確認您具備下列資源:

  1. 找出 Management API 伺服器名稱,或詢問平台管理員 (PA) 伺服器名稱。

  2. 登入並產生 Management API 伺服器的 kubeconfig 檔案 (如果沒有)。

  3. 請使用路徑取代這些操作說明中的 MANAGEMENT_API_SERVER{"</var>"}}

要求權限和存取權

如要執行本頁列出的工作,您必須具備專案虛擬機器管理員角色。請按照步驟驗證,或請專案 IAM 管理員在 VM 所在的專案命名空間中指派專案 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 命名空間中選擇任一圖片。

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,並使用 kubeconfig 進行管理 API 伺服器。
    • 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 truefalse,表示 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 管理 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 truefalse,指出刪除 VM 執行個體時,是否要自動刪除開機磁碟。
    MACHINE_TYPE 新 VM 的預先定義機器類型。如要選取可用的機器類型,請執行下列指令:
    gdcloud compute machine-types list
  2. 確認 VM 已建立,並等待 VM 顯示為 Running 狀態。Running 狀態並不表示作業系統已完全就緒且可供存取。

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

    VM_NAMEPROJECT 替換為 VM 的名稱和專案。VM_NAME 只能包含英數字元和破折號。

    如要在建立 VM 執行個體時新增開機指令碼,請按照「搭配 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 truefalse,表示 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 管理 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 管理 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 truefalse,指出刪除 VM 執行個體時,是否要自動刪除開機磁碟。
    MACHINE_TYPE 新 VM 的預先定義機器類型。如要選取可用的機器類型,請執行下列指令:
    kubectl --kubeconfig MANAGEMENT_API_SERVER get virtualmachinetype.virtualmachine.gdc.goog --namespace vm-system
  3. 確認 VM 已建立,並等待 VM 顯示為 Running 狀態。Running 狀態並不表示作業系統已完全就緒且可供存取。

    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 開機磁碟的映像檔命名空間。使用 vm-system 取得 GDC 提供的圖片,或將欄位留空以使用自訂圖片。
    BOOT_DISK_SIZE 開機磁碟大小,例如 20G
    這個值一律須大於或等於開機磁碟映像檔的 minimumDiskSize
    NO_BOOT_DISK_AUTO_DELETE truefalse,表示 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:要當做非開機磁碟使用的映像檔命名空間。使用 vm-system 取得 GDC 提供的圖片,或將欄位留空以使用自訂圖片。

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 管理 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 truefalse,指出刪除 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:要用做非開機磁碟的映像檔命名空間。如要使用 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 truefalse,表示 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 管理 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 truefalse,指出刪除 VM 執行個體時,是否要自動刪除開機磁碟。
    NUM_VCPU vCPU 的數量,支援的 vCPU 數量上限為 192 個。
    MEMORY 記憶體大小,例如 8G。記憶體大小上限為 1 TB。