如果您在本地环境中拥有包含所需软件和配置的虚拟磁盘(有时称为金磁盘或金映像),则可以将这些虚拟磁盘导入 Distributed Cloud 并使用生成的映像创建虚拟机,从而节省时间。导入工具支持 RAW 和 QCOW 映像格式。
准备工作
在继续之前,请确保您已准备好以下内容:
- 已下载、安装并配置 gdcloud CLI。GDC 的所有 CLI 命令都使用
gdcloud
或kubectl
CLI,并且需要操作系统 (OS) 环境。
对 Kubernetes 集群的登录访问权限。按照登录中的 CLI 步骤登录 Kubernetes 集群。
请求权限和访问权限
如需执行本页面中列出的任务,您必须具有 Project VirtualMachine Admin 角色。按照相关步骤验证您是否在虚拟机所在项目的命名空间中拥有 Project VirtualMachine Admin (project-vm-admin
) 角色。
对于使用 GDC 控制台或 gdcloud CLI 的虚拟机操作,请让项目 IAM 管理员为您分配上段中列出的角色以及项目查看者 (project-viewer
) 角色。
导入虚拟磁盘
您可以使用 gdcloud CLI 或 Virtual Machine Manager API 导入虚拟磁盘。
如需获得导入映像所需的权限,请让您的组织 IAM 管理员为您授予项目的 Project VirtualMachine Image Admin (project-vm-image-admin
) 角色。
gdcloud
使用 gdcloud compute images import
命令创建可启动的映像。
import
命令可确保磁盘具备所需的软件包,包括访客环境,而访客环境是配置凭据的必要条件,以便在 Linux 上使用安全 Shell (SSH) 和在 Windows 上使用远程桌面协议 (RDP) 连接到实例。
在 Linux 上,该命令还会安装网络时间协议 (NTP) 和 cloud-init
的软件包,以确保实例在 GDC 中正常运行。
您可以直接从工作站导入虚拟磁盘文件。导入工具会自动将文件上传到项目中的对象存储桶。
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 开始导入流程之前,您需要将虚拟磁盘上传到名为 vm-images-bucket
的对象存储桶。如需创建对象存储桶,请参阅为项目创建存储桶。
如需通过 API 导入虚拟磁盘,请执行以下操作:
在 Management API 服务器中创建
VirtualMachineImageImport
对象,以启动映像导入流程:kubectl --kubeconfig MANAGEMENT_API_SERVER \ apply -n PROJECT_ID -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: OPERATING_SYSTEM minimumDiskSize: DISK_SIZE EOF
执行以下变量替换操作:
变量 说明 IMAGE_NAME 要导入的映像的名称。名称不得超过 35 个字符。 PROJECT_ID 要将映像导入到的项目的项目 ID。 SOURCE_FILE 包含将虚拟磁盘上传到对象存储空间的源文件的名称。此值是对象存储路径中 vm-images-bucket/
之后的部分。OPERATING_SYSTEM 要导入的磁盘上的操作系统。 DISK_SIZE 使用此映像创建磁盘时,磁盘必须具有的最小大小。我们建议在原始映像的文件系统大小的基础上至少增加 20% 的缓冲区。例如:对于原始文件系统大小为 10Gi 的虚拟磁盘,至少使用 12Gi
。通过查询
VirtualMachineImageImport
对象的状态来监控导入进度:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get virtualmachineimageimport --namespace PROJECT_ID \ IMAGE_NAME -o jsonpath='{.status}'
清理资源
导入过程涉及将虚拟磁盘文件上传到对象存储空间。如果您使用 gdcloud CLI,则无论命令是否成功完成,都会在命令完成时清理对象。如果命令中断,或者通过 API 完成映像导入,虚拟磁盘文件可能会保留在名为 vm-images-bucket
的对象存储桶中,直到您手动删除该文件。
后续步骤
在创建并启动虚拟机页面中,创建一个使用您的映像的新虚拟机实例。