创建自定义启动磁盘

准备工作

如需使用 gdcloud 命令行界面 (CLI) 命令,请确保您已下载、安装并配置 gdcloud CLI。Distributed Cloud 的所有命令都使用 gdcloudkubectl CLI,并且需要操作系统 (OS) 环境。

获取 kubeconfig 文件路径

如需针对管理 API 服务器运行命令,请确保您拥有以下资源:

  1. 登录并生成管理 API 服务器的 kubeconfig 文件(如果您还没有)。

  2. 使用管理 API 服务器的 kubeconfig 文件路径替换这些说明中的 MANAGEMENT_API_SERVER

请求权限和访问权限

如需执行本页面中列出的任务,您必须具有 Project VirtualMachine Admin 角色。按照相关步骤验证您是否在虚拟机所在项目的命名空间中拥有 Project VirtualMachine Admin (project-vm-admin) 角色。

对于使用 GDC 控制台或 gdcloud CLI 的虚拟机操作,请让您的项目 IAM 管理员为您分配“Project VirtualMachine Admin”角色和“Project Viewer”角色 (project-viewer)。

创建启动磁盘

创建虚拟机 (VM) 实例时,您还必须为虚拟机创建启动磁盘。您可以使用公共映像或自定义映像。

当您创建虚拟机实例时,GDC 会自动创建永久性启动磁盘。如果实例需要额外的数据存储磁盘,请向虚拟机添加永久性磁盘

执行本页中所述的过程创建稍后可用于创建虚拟机的启动磁盘。

使用映像创建启动磁盘

除了创建实例外,您还可以创建独立的永久性启动磁盘,然后将其挂接到实例。本部分介绍如何通过 GDC 提供的操作系统映像自定义操作系统映像创建启动磁盘。

使用 GDC 提供的映像创建启动磁盘

在使用 GDC 提供的映像创建启动磁盘之前,请先查看可用映像的列表。然后使用提供的映像创建启动磁盘。

gdcloud

  1. 列出所有可用的映像及其最小磁盘大小:

    gdcloud compute images list
    

    此命令包含 Distributed Cloud 提供的映像和自定义映像。选择 vm-system 命名空间中的任意一个。

  2. 选择 Distributed Cloud 提供的映像来创建虚拟机磁盘:

    gdcloud compute disks create BOOT_DISK_NAME \
        --project=PROJECT \
        --size=DISK_SIZE \
        --image=IMAGE_NAME \
        --image-project=vm-system
    

    使用以下定义替换变量:

    变量定义
    BOOT_DISK_NAME 启动磁盘的名称。
    PROJECT 要在其中创建启动磁盘的 GDC 项目。
    DISK_SIZE 启动磁盘的大小必须至少为映像的 minimumDiskSize
    IMAGE_NAME 映像的名称。

kubectl

  1. 列出所有可用的 GDC 提供的映像:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get virtualmachineimages.virtualmachine.gdc.goog --namespace vm-system
    
  2. 获取特定 GDC 提供映像的 minimumDiskSize。创建的自定义启动磁盘的大小必须至少为 minimumDiskSize

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      get virtualmachineimages.virtualmachine.gdc.goog --namespace vm-system \
      IMAGE_NAME -ojsonpath='{.spec.minimumDiskSize}'
    
  3. 创建 VirtualMachineDisk 对象:

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -n PROJECT -f - <<EOF
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineDisk
    metadata:
      name: BOOT_DISK_NAME
    spec:
      source:
        image:
          name: IMAGE_NAME
          namespace: vm-system
      size: DISK_SIZE
    EOF
    

    使用以下定义替换变量,

    变量定义
    MANAGEMENT_API_SERVER 管理 API 服务器 kubeconfig 文件。
    IMAGE_NAME 映像的名称。
    PROJECT 要在其中创建启动磁盘的 GDC 项目。
    BOOT_DISK_NAME 启动磁盘的名称。
    DISK_SIZE 启动磁盘的大小必须至少为映像的 minimumDiskSize

使用自定义映像创建启动磁盘

自定义映像专属于您的项目。如需使用自定义映像创建虚拟机,您必须先在同一项目中创建自定义映像(如果尚未创建)。

如果您尚未设置必要的 IAM 角色,请先设置这些角色,以便访问项目中的自定义映像。然后继续执行这些说明。

gdcloud

  1. 列出所有自定义映像及其最小磁盘大小:

    gdcloud compute images list \
        --project=PROJECT \
    
  2. 选择一个自定义映像来创建虚拟机磁盘:

    gdcloud compute disks create BOOT_DISK_NAME \
        --project=PROJECT \
        --size=DISK_SIZE \
        --image=IMAGE_NAME \
        --image-project=PROJECT
    

    使用以下定义替换变量:

    变量定义
    BOOT_DISK_NAME 启动磁盘的名称。
    PROJECT 要在其中创建启动磁盘的 GDC 项目。
    DISK_SIZE 启动磁盘的大小必须至少为映像的 minimumDiskSize
    IMAGE_NAME 映像的名称。

API

  1. 列出所有自定义映像

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get virtualmachineimages.virtualmachine.gdc.goog --namespace PROJECT
    
  2. 获取特定自定义映像的 minimumDiskSize。创建的自定义启动磁盘的大小必须至少为 minimumDiskSize

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      get virtualmachineimages.virtualmachine.gdc.goog --namespace vm-system \
      IMAGE_NAME -ojsonpath='{.spec.minimumDiskSize}'
    
  3. 创建 VirtualMachineDisk 对象:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        apply --namespace PROJECT -f - <<EOF
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineDisk
    metadata:
      name: BOOT_DISK_NAME
    spec:
      source:
        image:
          name: IMAGE_NAME
          namespace: PROJECT
      size: DISK_SIZE
    EOF
    

    使用以下定义替换变量:

    变量定义
    MANAGEMENT_API_SERVER 管理 API 服务器 kubeconfig 文件。
    IMAGE_NAME 列出所有自定义映像命令中选择的映像的名称。
    PROJECT 要在其中创建启动磁盘的 GDC 项目。
    BOOT_DISK_NAME 启动磁盘的名称。
    DISK_SIZE 启动磁盘的大小必须至少为映像的 minimumDiskSize

如需替换启动磁盘,请参阅替换启动磁盘页面。