创建自定义启动磁盘

本文档介绍了在 Google Distributed Cloud (GDC) 网闸隔离配置中为虚拟机 (VM) 创建自定义启动磁盘的步骤。

当您创建虚拟机实例时,Distributed Cloud 会自动创建具有默认配置的启动永久性磁盘。您还必须为虚拟机创建启动磁盘。您可以使用公共映像或自定义映像。

如果实例需要额外的数据存储磁盘,请向虚拟机添加永久性磁盘。

本文档适用于平台管理员或应用运维人员群组中为虚拟机创建自定义启动磁盘的开发者。如需了解详情,请参阅适用于 GDC 网闸隔离配置文档的受众群体。

准备工作

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

获取 kubeconfig 文件路径

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

  1. 如果您没有 Management API 服务器的 kubeconfig 文件,请登录并生成该文件。

  2. 在这些说明中,请使用 Management API 服务器的 kubeconfig 文件的路径替换 MANAGEMENT_API_SERVER。

申请 IAM 角色

请与您的 IAM 项目管理员联系,请求在您的项目中授予以下角色:

  • Virtual Machine Project Admin (project-vm-admin):在项目命名空间中创建、修改、列出和删除标准虚拟机和高性能虚拟机。

  • Project Viewer(project-viewer):查看项目命名空间中的所有资源。

所有虚拟机角色都必须绑定到虚拟机所在项目的命名空间。 按照相关步骤验证您的访问权限。

创建启动磁盘

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

使用映像创建启动磁盘

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

通过 GDC 提供的映像创建启动磁盘

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

gdcloud

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

    gdcloud compute images list
    

    此命令会列出 Distributed Cloud 提供的映像和自定义映像。选择 vm-system 命名空间中的任一 Pod。

  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 \
      -n vm-system \
      get virtualmachineimages.virtualmachine.gdc.goog
    
  2. 获取特定 GDC 提供的映像的 minimumDiskSize。创建的自定义启动磁盘的大小必须至少为 minimumDiskSize:

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

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT \
      apply -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 Management 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 \
      -n PROJECT \
      get virtualmachineimages.virtualmachine.gdc.goog
    
  2. 获取特定自定义映像的 minimumDiskSize。创建的自定义启动磁盘的大小必须至少为 minimumDiskSize:

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

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT \
      apply -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 Management API 服务器 kubeconfig 文件。
    IMAGE_NAME 从列出所有自定义映像命令中选择的映像名称。
    PROJECT 要在其中创建启动磁盘的 GDC 项目。
    BOOT_DISK_NAME 启动磁盘的名称。
    DISK_SIZE 启动磁盘的大小至少需要为映像的 minimumDiskSize。

接下来怎么做?