匯入虛擬磁碟

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

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

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

事前準備

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

準備環境

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

要求 IAM 角色

請與專案 IAM 管理員聯絡,要求對方授予您專案的下列角色:

  • 虛擬機器專案管理員 (project-vm-admin):在專案命名空間中建立、修改、列出及刪除 VM。

  • 專案檢視者(project-viewer):查看專案命名空間中的所有資源。

  • 虛擬機器映像檔專案管理員 (project-vm-image-admin):在專案命名空間中建立、列出及刪除 VM 映像檔。

所有 VM 角色都必須繫結至 VM 所在的專案命名空間。 按照步驟驗證存取權。

匯入虛擬磁碟

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

如要匯入虛擬磁碟,請使用 gdcloud CLI 或 虛擬機器管理員 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:要匯入的磁碟 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 的物件儲存空間值區中,直到您手動刪除該檔案為止。

後續步驟