匯入虛擬磁碟

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

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

本文適用於平台管理員或應用程式操作員群組中,負責建立 VM 映像檔的開發人員。詳情請參閱「GDC 實體隔離方案說明文件的目標對象」。

事前準備

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

準備環境

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

要求 IAM 角色

如要取得匯入虛擬磁碟所需的權限,請要求 IAM 專案管理員授予您下列專案角色:

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

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

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

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

匯入虛擬磁碟

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

如要匯入虛擬磁碟,請使用 gdcloud CLI 或 虛擬機器管理員 API。

gdcloud

import 指令會檢查 GDC 提供的映像檔是否具備必要套件,可設定憑證,以便使用安全殼層 (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
    

    請替換下列變數:

    • MANAGEMENT_API_SERVER:管理 API 伺服器的 kubeconfig 檔案。
    • 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,CLI 會在指令完成時刪除物件,即使匯入失敗也一樣。如果您中斷指令,或使用 API 匯入映像檔,虛擬磁碟檔案可能會保留在名為 vm-images-bucket 的物件儲存庫 bucket 中,直到您手動刪除檔案為止。

後續步驟