创建并启动虚拟机实例

使用启动磁盘映像或启动磁盘快照创建虚拟机 (VM) 实例。您可以创建具有一个或多个磁盘的虚拟机,也可以稍后添加磁盘。Google Distributed Cloud (GDC) 网闸隔离配置会在您创建虚拟机实例时自动启动该实例。

您还可以在创建虚拟机实例之前或之后向其添加启动脚本。

本文档适用于在 GDC 环境中创建和管理虚拟机的平台管理员或应用运维人员群组中的开发者。如需了解详情,请参阅适用于 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。

虚拟机命名准则

创建虚拟机实例时,请遵循以下命名准则:

  • 虚拟机名称只能包含字母数字字符和短划线。
  • 使用字母数字字符和短划线以外的符号(例如英文句号)会导致虚拟机连接失败。
  • 虚拟机名称不得超过 53 个字符。

申请 IAM 角色

如需获得创建和启动虚拟机实例所需的权限,请让您的 IAM 项目管理员为您授予项目的以下角色:

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

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

  • 虚拟机映像项目管理员 (project-vm-image-admin):在项目命名空间中创建、列出和删除 GDC 提供的虚拟机映像和自定义虚拟机映像。

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

通过映像创建虚拟机实例

本部分介绍了如何通过 GDC 提供的操作系统映像或自定义操作系统映像创建虚拟机。

查看 GDC 提供的可用映像列表

在使用 GDC 提供的映像创建虚拟机之前,请先查看可用映像列表。如需详细了解 GDC 提供的映像,请参阅支持的虚拟机映像。

gdcloud

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

    gdcloud compute images list
    

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

API

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

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n vm-system \
      get virtualmachineimage.virtualmachine.gdc.goog
    
  2. 获取特定 GDC 提供的映像的 minimumDiskSize:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n vm-system \
      get virtualmachineimage.virtualmachine.gdc.goog BOOT_DISK_IMAGE_NAME \
      -ojsonpath='{.spec.minimumDiskSize}{"\n"}'
    

    替换以下内容:

    • MANAGEMENT_API_SERVER:管理 API 服务器的 kubeconfig 文件。
    • BOOT_DISK_IMAGE_NAME:映像的名称。

通过 GDC 提供的映像创建虚拟机实例

默认情况下,所有 GDC 项目都可以通过 GDC 提供的操作系统映像创建虚拟机。

控制台

  1. 在导航菜单中,依次选择虚拟机 > 实例。
  2. 点击创建实例。
  3. 在名称字段中,为虚拟机指定名称。
  4. 选择要在其中创建虚拟机的可用区。
  5. 可选:点击添加标签,为虚拟机分配标签。这有助于整理虚拟机实例。
  6. 选择要用于虚拟机的机器配置:
    1. 通用:确保机器类型符合您的工作负载要求。
    2. 自定义:设置机器的核心数量和内存要求。
  7. 点击下一步。
  8. 如果您想启用外部访问,请选择允许外部访问。
  9. 点击下一步。
  10. 在启动磁盘部分,GDC 会自动添加具有默认配置的启动磁盘。您可以保持此配置不变,也可以点击更改来修改默认配置:
    1. 在磁盘详细信息部分中,修改磁盘名称。
    2. 在磁盘设置部分中,修改大小值。
    3. 在来源图片部分中,点击图片名称菜单,然后选择其中一张图片。
    4. 选中或取消选中开启安全启动。如果使用 Windows 映像,则必须启用安全启动。
    5. 选择保留磁盘或删除磁盘,以配置磁盘删除规则。
    6. 点击保存。
  11. 点击创建以创建虚拟机实例。

gdcloud

  1. 选择 GDC 提供的映像,在目标可用区中创建虚拟机实例:

    gdcloud compute instances create VM_NAME \
      --machine-type=MACHINE_TYPE \
      --image=BOOT_DISK_IMAGE_NAME \
      --image-project=vm-system \
      --boot-disk-size=BOOT_DISK_SIZE \
      --no-boot-disk-auto-delete=NO_BOOT_DISK_AUTO_DELETE
    

    替换以下内容:

    变量定义
    VM_NAME 新虚拟机的名称。名称最多可包含 53 个字母数字字符和短划线。
    MACHINE_TYPE 新虚拟机的预定义机器类型。如需选择可用的机器类型,请运行以下命令:
    gdcloud compute machine-types list
    BOOT_DISK_IMAGE_NAME 要用于新虚拟机启动磁盘的映像的名称。
    BOOT_DISK_SIZE 启动磁盘的大小,例如 20GB。
    此值必须始终大于或等于启动磁盘映像的 minimumDiskSize。
    NO_BOOT_DISK_AUTO_DELETE 指定 true 可在删除虚拟机实例时保留启动磁盘,指定 false 可自动删除启动磁盘。

API

  1. 选择 GDC 提供的映像,在目标可用区中创建虚拟机实例:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT \
      apply -f - <<EOF
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineDisk
    metadata:
      name: VM_BOOT_DISK_NAME
    spec:
      source:
        image:
          name: BOOT_DISK_IMAGE_NAME
          namespace: vm-system
      size: BOOT_DISK_SIZE
    ---
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
    spec:
      compute:
        virtualMachineType: MACHINE_TYPE
      disks:
      - virtualMachineDiskRef:
          name: VM_BOOT_DISK_NAME
        boot: true
        autoDelete: BOOT_DISK_AUTO_DELETE
    EOF
    

    替换以下内容:

    变量定义
    MANAGEMENT_API_SERVER 管理 API 服务器 kubeconfig 文件。
    PROJECT 用于创建虚拟机的 GDC 项目。
    VM_BOOT_DISK_NAME 新虚拟机启动磁盘的名称。
    BOOT_DISK_IMAGE_NAME 要用于新虚拟机启动磁盘的映像的名称。
    BOOT_DISK_SIZE 启动磁盘的大小,例如 20Gi。
    此值必须始终大于或等于启动磁盘映像的 minimumDiskSize。
    VM_NAME 新虚拟机的名称。名称最多可包含 53 个字母数字字符和短划线。
    MACHINE_TYPE 新虚拟机的预定义机器类型。如需选择可用的机器类型,请运行以下命令:
    kubectl --kubeconfig MANAGEMENT_API_SERVER get virtualmachinetype.virtualmachine.gdc.goog --namespace vm-system
    BOOT_DISK_AUTO_DELETE 指定 true 可在删除虚拟机实例时自动删除启动磁盘,指定 false 可保留启动磁盘。
  2. 验证虚拟机是否已成功创建,并等待虚拟机显示 Running 状态。Running 状态并不表示操作系统已完全准备就绪且可访问。

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT \
      get virtualmachine.virtualmachine.gdc.goog VM_NAME
    

    将 VM_NAME 和 PROJECT 分别替换为虚拟机的名称和项目。

    如需在创建虚拟机实例时添加启动脚本,请按照将启动脚本与虚拟机实例搭配使用页面上提供的步骤操作。请务必先关停虚拟机,然后再添加脚本。

通过自定义映像创建虚拟机实例

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

控制台

  1. 在导航菜单中,依次选择虚拟机 > 实例。
  2. 点击创建实例。
  3. 在名称字段中,为虚拟机指定名称。
  4. 选择要在其中创建虚拟机的可用区。
  5. 可选:点击添加标签,为虚拟机分配标签。这有助于整理虚拟机实例。
  6. 选择要用于虚拟机的机器配置:
    1. 通用:确保机器类型符合您的工作负载要求。
    2. 自定义:设置机器的核心数量和内存要求。
  7. 点击下一步。
  8. 选中允许外部访问复选框,为虚拟机实例启用外部访问。
  9. 点击下一步。
  10. 在启动磁盘部分,GDC 会自动添加具有默认配置的启动磁盘。您可以保持此配置不变,也可以点击更改以修改默认配置:

    1. 在磁盘详细信息部分中,修改磁盘名称。
    2. 在磁盘设置部分中,修改大小值。
    3. 在来源映像部分中,点击映像名称菜单,然后选择带有由客户创建子文本的映像之一。
    4. 选中或取消选中开启安全启动。如果使用 Windows 映像,则必须启用安全启动。

    5. 选择保留磁盘或删除磁盘,以配置磁盘删除规则。

    6. 点击保存。

  11. 点击创建以创建虚拟机实例。

gdcloud

  1. 列出所有自定义映像:

    gdcloud compute images list --no-standard-images=true
    
  2. 创建该虚拟机实例:

    gdcloud compute instances create VM_NAME \
      --machine-type=MACHINE_TYPE \
      --image=BOOT_DISK_IMAGE_NAME \
      --boot-disk-size=BOOT_DISK_SIZE \
      --no-boot-disk-auto-delete=NO_BOOT_DISK_AUTO_DELETE
    

    替换以下内容:

    变量定义
    VM_NAME 新虚拟机的名称。名称最多可包含 53 个字母数字字符和短划线。
    MACHINE_TYPE 新虚拟机的预定义机器类型。如需选择可用的机器类型,请运行以下命令:
    gdcloud compute machine-types list
    BOOT_DISK_IMAGE_NAME 要用于新虚拟机启动磁盘的映像的名称。
    BOOT_DISK_SIZE 启动磁盘的大小,例如 20GB。
    此值必须始终大于或等于启动磁盘映像的 minimumDiskSize。
    NO_BOOT_DISK_AUTO_DELETE 指定 true 可在删除虚拟机实例时保留启动磁盘,指定 false 可自动删除启动磁盘。

API

  1. 列出所有自定义映像:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT \
      get virtualmachineimage.virtualmachine.gdc.goog
    

    获取特定映像的 minimumDiskSize 以创建虚拟机实例:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT \
      get virtualmachineimage.virtualmachine.gdc.goog BOOT_DISK_IMAGE_NAME \
      -ojsonpath='{.spec.minimumDiskSize}{"\n"}'
    

    替换以下内容:

    变量定义
    MANAGEMENT_API_SERVER 管理 API 服务器 kubeconfig 文件。
    PROJECT 映像的项目。
    BOOT_DISK_IMAGE_NAME 自定义映像的名称。
  2. 创建该虚拟机实例:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT \
      apply -f - <<EOF
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineDisk
    metadata:
      name: VM_BOOT_DISK_NAME
    spec:
      source:
        image:
          name: BOOT_DISK_IMAGE_NAME
      size: BOOT_DISK_SIZE
    ---
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
    spec:
      compute:
        virtualMachineType: MACHINE_TYPE
      disks:
      - virtualMachineDiskRef:
          name: VM_BOOT_DISK_NAME
        boot: true
        autoDelete: BOOT_DISK_AUTO_DELETE
    EOF
    

    替换以下内容:

    变量定义
    MANAGEMENT_API_SERVER 管理 API 服务器 kubeconfig 文件。
    PROJECT 用于创建虚拟机的 GDC 项目。
    VM_BOOT_DISK_NAME 新虚拟机启动磁盘的名称。
    BOOT_DISK_IMAGE_NAME 要用于新虚拟机启动磁盘的映像的名称。
    BOOT_DISK_SIZE 启动磁盘的大小,例如 20Gi。
    此值必须始终大于或等于启动磁盘映像的 minimumDiskSize。
    VM_NAME 新虚拟机的名称。名称最多可包含 53 个字母数字字符和短划线。
    MACHINE_TYPE 新虚拟机的预定义机器类型。如需选择可用的机器类型,请运行以下命令:
    kubectl --kubeconfig MANAGEMENT_API_SERVER get virtualmachinetype.virtualmachine.gdc.goog --namespace vm-system
    BOOT_DISK_AUTO_DELETE 指定 true 可在删除虚拟机实例时自动删除启动磁盘,指定 false 可保留启动磁盘。
  3. 验证虚拟机是否已成功创建,并等待虚拟机显示其处于 Running 状态。处于 Running 状态并不意味着操作系统已完全准备就绪且可供访问。

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT \
      get virtualmachine.virtualmachine.gdc.goog VM_NAME
    

    将 VM_NAME 和 PROJECT 分别替换为虚拟机的名称和项目。

创建具有额外的非启动磁盘的虚拟机实例

您可以在创建虚拟机时创建非启动磁盘。每个额外磁盘都可以指定或不指定映像来源。后一种情况用于创建空白磁盘。

控制台

  1. 在导航菜单中,依次选择虚拟机 > 实例。
  2. 点击创建实例。
  3. 在名称字段中,为虚拟机指定名称。
  4. 选择要在其中创建虚拟机的可用区。
  5. 可选:点击添加标签,为虚拟机分配标签。这有助于整理虚拟机实例。
  6. 选择要用于虚拟机的机器配置:
    1. 通用:确保机器类型符合您的工作负载要求。
    2. 自定义:设置机器的核心数量和内存要求。
  7. 点击下一步。
  8. 选中允许外部访问复选框,为虚拟机实例启用外部访问。
  9. 点击下一步。
  10. 在启动磁盘部分,GDC 会自动添加具有默认配置的启动磁盘。您可以保持此配置不变,也可以点击更改来修改默认配置:
    1. 在磁盘详细信息部分中,修改磁盘名称。
    2. 在磁盘设置部分中,修改大小值。
    3. 在来源图片部分中,点击图片名称菜单,然后选择其中一张图片。
    4. 选中或取消选中开启安全启动。如果使用 Windows 映像,则必须启用安全启动。
    5. 选择保留磁盘或删除磁盘,以配置磁盘删除规则。
    6. 点击保存。
  11. 如需向虚拟机实例添加更多磁盘,请选择添加新磁盘:
    1. 为虚拟机磁盘指定一个名称。
    2. 配置磁盘大小和挂接设置。
    3. 点击保存。
  12. 点击创建以创建虚拟机实例。

gdcloud

  1. 使用映像创建启动磁盘:

    gdcloud compute disks create VM_BOOT_DISK_NAME \
      --size=BOOT_DISK_SIZE \
      --image=BOOT_DISK_IMAGE_NAME \
      --image-project=BOOT_DISK_IMAGE_NAMESPACE
    
  2. 通过映像创建额外的非启动磁盘:

    gdcloud compute disks create NON_BOOT_DISK_FROM_IMAGE \
      --size=NON_BOOT_DISK_SIZE \
      --image=NON_BOOT_DISK_IMAGE_NAME \
      --image-project=NON_BOOT_DISK_IMAGE_NAMESPACE
    
  3. 创建空白的非启动磁盘:

    gdcloud compute disks create NON_BOOT_BLANK_DISK \
      --size=NON_BOOT_BLANK_DISK_SIZE
    
  4. 使用前面步骤中的磁盘创建实例:

    gdcloud compute instances create VM_NAME \
      --machine-type=MACHINE_TYPE \
      --disk=name=VM_BOOT_DISK_NAME,boot=true \
      --no-boot-disk-auto-delete=NO_BOOT_DISK_AUTO_DELETE \
      --disk=name=NON_BOOT_DISK_FROM_IMAGE \
      --disk=name=NON_BOOT_BLANK_DISK
    

    替换以下内容:

    变量定义
    VM_BOOT_DISK_NAME 新虚拟机启动磁盘的名称。
    BOOT_DISK_SIZE 启动磁盘的大小,例如 20GB。
    此值必须始终大于或等于启动磁盘映像的 minimumDiskSize。
    BOOT_DISK_IMAGE_NAME 要用于新虚拟机启动磁盘的映像的名称。
    BOOT_DISK_IMAGE_NAMESPACE 要用于新虚拟机启动磁盘的映像的命名空间。对于 GDC 提供的映像,请使用 vm-system;对于自定义映像,请将该字段留空。
    NON_BOOT_DISK_FROM_IMAGE 您通过映像创建的额外非启动磁盘的名称。
    NON_BOOT_DISK_SIZE 额外非启动磁盘的大小,例如 20GB。
    NON_BOOT_DISK_IMAGE_NAME 要用于非启动磁盘的映像的名称。
    NON_BOOT_DISK_IMAGE_NAMESPACE 要用于非启动磁盘的映像的命名空间。对于 GDC 提供的映像,请使用 vm-system;对于自定义映像,请将该字段留空。
    NON_BOOT_BLANK_DISK 额外的空白非启动磁盘的名称。
    NON_BOOT_BLANK_DISK_SIZE 额外的空白非启动磁盘的大小,例如 20GB。
    VM_NAME 新虚拟机的名称。名称最多可包含 53 个字母数字字符和短划线。
    MACHINE_TYPE 新虚拟机的预定义机器类型。如需选择可用的机器类型,请运行以下命令:
    gdcloud compute machine-types list
    NO_BOOT_DISK_AUTO_DELETE 指定 true 可在删除虚拟机实例时保留启动磁盘,指定 false 可自动删除启动磁盘。

API

  1. 创建具有非启动磁盘的虚拟机:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT \
      apply -f - <<EOF
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineDisk
    metadata:
      name: NON_BOOT_DISK_FROM_IMAGE
    spec:
      source:
        image:
          name: NON_BOOT_DISK_IMAGE_NAME
          namespace: NON_BOOT_DISK_IMAGE_NAMESPACE
      size: NON_BOOT_DISK_SIZE
    ---
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineDisk
    metadata:
      name: NON_BOOT_BLANK_DISK
    spec:
      size: NON_BOOT_BLANK_DISK_SIZE
    ---
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineDisk
    metadata:
      name: VM_BOOT_DISK_NAME
    spec:
      source:
        image:
          name: BOOT_DISK_IMAGE_NAME
          namespace: BOOT_DISK_IMAGE_NAMESPACE
      size: BOOT_DISK_SIZE
    ---
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
    spec:
      compute:
        virtualMachineType: MACHINE_TYPE
      disks:
      - virtualMachineDiskRef:
          name: VM_BOOT_DISK_NAME
        boot: true
        autoDelete: BOOT_DISK_AUTO_DELETE
      - virtualMachineDiskRef:
          name: NON_BOOT_DISK_FROM_IMAGE
      - virtualMachineDiskRef:
          name: NON_BOOT_BLANK_DISK
    EOF
    

    替换以下内容:

    变量定义
    MANAGEMENT_API_SERVER 管理 API 服务器 kubeconfig 文件。
    PROJECT 要在虚拟机中创建的 GDC 项目。
    NON_BOOT_DISK_FROM_IMAGE 您通过映像创建的额外非启动磁盘的名称。
    NON_BOOT_DISK_IMAGE_NAME 要用于非启动磁盘的映像的名称。
    NON_BOOT_DISK_IMAGE_NAMESPACE 要用于非启动磁盘的映像的命名空间。对于 GDC 提供的映像,请使用 vm-system;对于自定义映像,请留空。
    NON_BOOT_DISK_SIZE 您通过映像创建的额外非启动磁盘的大小,例如 20Gi。
    NON_BOOT_BLANK_DISK 额外的空白非启动磁盘的名称。
    NON_BOOT_BLANK_DISK_SIZE 额外的空白非启动磁盘的大小,例如 20Gi。
    VM_BOOT_DISK_NAME 新虚拟机启动磁盘的名称。
    BOOT_DISK_IMAGE_NAME 要用于新虚拟机启动磁盘的映像的名称。
    BOOT_DISK_IMAGE_NAMESPACE 要用于新虚拟机启动磁盘的映像的命名空间。对于 GDC 提供的映像,请使用命名空间 vm-system;对于自定义映像,请留空。
    BOOT_DISK_SIZE 启动磁盘的大小,例如 20Gi。
    此值必须始终大于或等于启动磁盘映像的 minimumDiskSize。
    VM_NAME 新虚拟机的名称。名称最多可包含 53 个字母数字字符和短划线。
    MACHINE_TYPE 新虚拟机的预定义机器类型。如需选择可用的机器类型,请运行以下命令:
    kubectl --kubeconfig MANAGEMENT_API_SERVER get virtualmachinetype.virtualmachine.gdc.goog --namespace vm-system
    BOOT_DISK_AUTO_DELETE 指定 true 可在删除虚拟机实例时自动删除启动磁盘,指定 false 可保留启动磁盘。

    在使用磁盘之前,格式化并装载磁盘。

根据快照或备份创建虚拟机

您可以通过以下方式从快照创建新虚拟机:

  • 恢复虚拟机启动磁盘:如果您使用快照备份了虚拟机的启动磁盘,请使用该快照创建新的虚拟机。如需了解详情,请参阅恢复快照。
    • 恢复非启动磁盘:如果您使用快照备份了非启动磁盘,则还可以在创建虚拟机时,按照相同的说明将快照恢复到新的非启动磁盘。

如需使用相同的启动磁盘创建多个虚拟机,请执行以下操作:

  1. 创建自定义映像。
  2. 通过该映像创建虚拟机,而无需使用快照。

创建具有指定 IP 地址和子网的虚拟机实例

默认情况下,您可以在没有网络规范的情况下创建 GDC 虚拟机。此类虚拟机连接到默认 VPC,并从默认子网动态分配 IP 地址。如需使用默认配置创建虚拟机,请参阅使用 GDC 提供的映像创建虚拟机。

如果您不想为 GDC 虚拟机使用默认 IP 地址配置,可以创建具有动态或静态 IP 地址的虚拟机:

  • 来自自定义子网的动态 IP 地址:您创建一个具有特定 CIDR 的子网,并创建一个具有从该 CIDR 动态分配的 IP 地址的虚拟机。

  • 来自自定义子网的静态 IP 地址:您创建一个具有特定 CIDR 的子网,并创建一个具有该 CIDR 中的静态 IP 地址的虚拟机。

如需详细了解子网创建,请参阅 GDC 中的子网和 IP 地址。

本部分介绍如何创建具有动态分配的 IP 地址或静态 IP 地址的虚拟机。

创建具有从自定义子网动态分配的 IP 地址的虚拟机

创建具有从特定 CIDR 动态分配的 IP 地址的虚拟机:

   kubectl --kubeconfig MANAGEMENT_API_SERVER \
     -n PROJECT \
     apply -f - <<EOF
   apiVersion: virtualmachine.gdc.goog/v1
   kind: VirtualMachineDisk
   metadata:
     name: VM_BOOT_DISK_NAME
   spec:
     source:
       image:
         name: BOOT_DISK_IMAGE_NAME
         namespace: vm-system
     size: BOOT_DISK_SIZE
   ---
   apiVersion: virtualmachine.gdc.goog/v1
   kind: VirtualMachine
   metadata:
     name: VM_NAME
   spec:
     compute:
       virtualMachineType: MACHINE_TYPE
     disks:
     - virtualMachineDiskRef:
         name: VM_BOOT_DISK_NAME
       boot: true
       autoDelete: BOOT_DISK_AUTO_DELETE
     network:
       interfaces:
       - network: NETWORK_NAME
         subnet: SUBNET_NAME
   EOF

执行以下变量替换操作:

变量定义
MANAGEMENT_API_SERVER 管理 API 服务器 kubeconfig 文件。
PROJECT 用于创建虚拟机的 GDC 项目。
VM_BOOT_DISK_NAME 新虚拟机启动磁盘的名称。
BOOT_DISK_IMAGE_NAME 要用于新虚拟机启动磁盘的映像的名称。
BOOT_DISK_SIZE 启动磁盘的大小,例如 20Gi。
此值必须始终大于或等于启动磁盘映像的 minimumDiskSize。
VM_NAME 新虚拟机的名称。名称最多可包含 53 个字母数字字符和短划线。
MACHINE_TYPE 新虚拟机的预定义机器类型。选择可用的机器类型:
kubectl --kubeconfig MANAGEMENT_API_SERVER get virtualmachinetype.virtualmachine.gdc.goog --namespace vm-system
BOOT_DISK_AUTO_DELETE 指定 true 可在删除虚拟机实例时自动删除启动磁盘,指定 false 可保留启动磁盘。
NETWORK_NAME VPC 网络的名称,例如 default。
SUBNET_NAME 自定义子网的名称。

使用子网中的静态 IP 地址创建虚拟机

使用自定义子网中的静态 IP 地址创建虚拟机:

   kubectl --kubeconfig MANAGEMENT_API_SERVER \
     -n PROJECT \
     apply  -f - <<EOF
   apiVersion: virtualmachine.gdc.goog/v1
   kind: VirtualMachineDisk
   metadata:
     name: VM_BOOT_DISK_NAME
   spec:
     source:
       image:
         name: BOOT_DISK_IMAGE_NAME
         namespace: vm-system
     size: BOOT_DISK_SIZE
   ---
   apiVersion: virtualmachine.gdc.goog/v1
   kind: VirtualMachine
   metadata:
     name: VM_NAME
   spec:
     compute:
       virtualMachineType: MACHINE_TYPE
     disks:
     - virtualMachineDiskRef:
         name: VM_BOOT_DISK_NAME
       boot: true
       autoDelete: BOOT_DISK_AUTO_DELETE
     network:
       interfaces:
       - network: NETWORK_NAME
         subnet: SUBNET_NAME
         ipAddresses:
         - address: IP_ADDRESS
   EOF

执行以下变量替换操作:

变量定义
MANAGEMENT_API_SERVER 管理 API 服务器 kubeconfig 文件。
PROJECT 用于创建虚拟机的 GDC 项目。
VM_BOOT_DISK_NAME 新虚拟机启动磁盘的名称。
BOOT_DISK_IMAGE_NAME 要用于新虚拟机启动磁盘的映像的名称。
BOOT_DISK_SIZE 启动磁盘的大小,例如 20Gi。
此值必须始终大于或等于启动磁盘映像的 minimumDiskSize。
VM_NAME 新虚拟机的名称。名称最多可包含 53 个字母数字字符和短划线。
MACHINE_TYPE 新虚拟机的预定义机器类型。如需选择可用的机器类型,请运行以下命令:
kubectl --kubeconfig MANAGEMENT_API_SERVER get virtualmachinetype.virtualmachine.gdc.goog --namespace vm-system
BOOT_DISK_AUTO_DELETE 指定 true 可在删除虚拟机实例时自动删除启动磁盘,指定 false 可保留启动磁盘。
NETWORK_NAME VPC 网络的名称,例如 default。
SUBNET_NAME 自定义子网的名称。
IP_ADDRESS IP 地址。此范围必须在所选子网范围内。您只能在 ipAddresses 字段中指定一个 IP 地址。

后续步骤