匯入虛擬磁碟

本文說明如何將虛擬機器 (VM) 磁碟映像檔匯入 Google Distributed Cloud (GDC) 實體隔離環境。

將現有的虛擬磁碟 (通常稱為黃金磁碟黃金映像檔) 匯入 Distributed Cloud,即可節省時間,並使用產生的映像檔建立虛擬機器。匯入工具支援 RAW 和 QCOW 映像檔格式。

本文適用於平台管理員或應用程式運算子群組中,負責建立 VM 映像檔的開發人員。詳情請參閱 GDC 氣隙環境適用的目標對象說明文件

事前準備

請務必先完成以下事項,再繼續操作:

  • 已下載、安裝及設定 gcloud CLI。GDC 的所有 CLI 指令都使用 gdcloudkubectl CLI,且需要作業系統 (OS) 環境。

要求權限和存取權

如要匯入映像檔並執行本頁列出的 VM 作業,請要求專案 IAM 管理員在 VM 所在的專案命名空間中授予您下列 IAM 角色:

  • 專案 VirtualMachine 管理員 (project-vm-admin):管理專案命名空間中的 VM。

  • 專案檢視者 (project-viewer):擁有專案命名空間中所有資源的唯讀存取權。

按照步驟驗證存取權。

匯入虛擬磁碟

您可以直接從工作站匯入虛擬磁碟檔案。匯入工具會自動將檔案上傳至專案中的物件儲存空間 bucket。

如要匯入虛擬磁碟,請使用 gdcloud CLI 或 Virtual Machine Manager API

gdcloud

import 指令會檢查磁碟是否具備必要套件,以便設定憑證,透過安全殼層 (SSH) 和遠端桌面通訊協定 (RDP) 連線至執行個體。包括訪客環境。

這項指令也會安裝網路時間通訊協定 (NTP) 和 cloud-init 的套件,讓執行個體在 GDC 中正常運作。

  • 如要建立可開機的映像檔,請使用 gdcloud compute images import 指令:
gdcloud compute images import IMAGE_NAME \
  --source-file=SOURCE_FILE \
  --os=IMAGE_OS \
  --timeout=TIMEOUT

請替換下列變數:

  • IMAGE_NAME:目標映像檔的名稱。名稱長度不得超過 35 個字元。
  • SOURCE_FILE:虛擬磁碟檔案。這個檔案是工作站上的本機檔案。您可以提供絕對或相對路徑。
  • IMAGE_OS:要匯入的磁碟 OS。
  • TIMEOUT:匯入作業在失敗並顯示「TIMEOUT」前可持續的時間。舉例來說,如果指定 2h,程序會在 2 小時後失敗。預設逾時時間為 1h

視虛擬磁碟大小和網路連線速度而定,上傳作業可能需要較長時間。匯入作業則可能需要數十分鐘的時間,實際情況需視磁碟大小而定。

API

如要透過 API 匯入虛擬磁碟,請按照下列步驟操作:

  1. 在 Management API 伺服器中建立 VirtualMachineImageImport 物件,開始匯入圖片:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT_ID \
      apply -f - <<EOF
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineImageImport
    metadata:
      name: IMAGE_NAME
      namespace: PROJECT_ID
    spec:
      source:
        objectStorage:
          bucketRef:
            name: vm-images-bucket
          objectName: SOURCE_FILE
      imageMetadata:
        name: IMAGE_NAME
        operatingSystem: IMAGE_OS
        minimumDiskSize: DISK_SIZE
    EOF
    

    請替換下列變數:

    • IMAGE_NAME:要匯入的映文件名稱。名稱長度不得超過 35 個字元。
    • PROJECT_ID:您要匯入圖片的專案 ID。
    • SOURCE_FILE:包含上傳至物件儲存空間的虛擬磁碟來源檔案名稱。這個值是 vm-images-bucket/ 後的物件儲存路徑區段。
    • IMAGE_OS:要匯入的磁碟作業系統。
    • DISK_SIZE:使用這個映像檔建立磁碟時,磁碟必須具備的最小大小。在原始圖片的檔案系統大小上,至少使用 20% 的緩衝區。舉例來說,如果虛擬磁碟的原始檔案系統大小為 10G,請至少使用 12G
  2. 查詢 VirtualMachineImageImport 物件的狀態,監控匯入進度:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT_ID \
      get virtualmachineimageimport.virtualmachine.gdc.goog IMAGE_NAME \
      -o jsonpath='{.status}'
    

清除所用資源

匯入程序包括將虛擬磁碟檔案上傳至物件儲存空間。如果您使用 gdcloud CLI,無論指令是否成功,都會在完成時清除物件。如果指令遭到中斷,或是您透過 API 匯入映像檔,虛擬磁碟檔案可能會保留在名為 vm-images-bucket 的物件儲存空間值區中,直到您手動刪除該檔案為止。

後續步驟