导入虚拟磁盘

本文档介绍了将虚拟机 (VM) 磁盘映像导入到 Google Distributed Cloud (GDC) 气隙环境中的步骤。

将现有虚拟磁盘(通常称为金磁盘金映像)导入 Distributed Cloud,以节省时间并使用生成的映像创建虚拟机。导入工具支持 RAW 和 QCOW 映像格式。

本文档面向平台管理员或应用运维人员群组中创建虚拟机映像的开发者。如需了解详情,请参阅 GDC 气隙环境文档的受众群体

准备工作

在继续之前,请确保您已做好以下准备:

  • 已下载、安装并配置 gdcloud CLI。GDC 的所有 CLI 命令都使用 gdcloudkubectl CLI,并且需要操作系统 (OS) 环境。

请求权限和访问权限

如需导入映像并执行此页面上列出的虚拟机操作,请让项目 IAM 管理员向您授予虚拟机所在项目的命名空间中的以下 IAM 角色:

  • Project VirtualMachine Admin (project-vm-admin):管理项目命名空间中的虚拟机。

  • Project Viewer (project-viewer):对项目命名空间中的所有资源具有只读权限。

按照相关步骤验证您的访问权限。

导入虚拟磁盘

您可以直接从工作站导入虚拟磁盘文件。导入工具会自动将文件上传到您项目中的对象存储分区。

如需导入虚拟磁盘,请使用 gdcloud CLI 或 Virtual Machine Manager API

gdcloud

import 命令会检查磁盘是否具有必要的软件包,以配置用于通过安全 shell (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:要导入的磁盘上的操作系统。
  • 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 的对象存储分区中,直到您手动删除该文件为止。

后续步骤