手动实时迁移虚拟机


如需将单租户虚拟机迁移到其他节点或节点组,您可以手动启动实时迁移。您也可以手动启动实时迁移,以将多租户虚拟机迁移到单独租用节点。如需了解如何将虚拟机迁移出单独租用节点,请参阅将虚拟机迁移出单独租用节点

准备工作

  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。

    选择标签页以了解您打算如何使用本页面上的示例:

    gcloud

    1. 安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init
    2. 设置默认区域和可用区

    REST

    如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

      安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init

API 速率限制

手动实时迁移请求归类为查询 API 速率限制

将虚拟机手动实时迁移到单独租用节点或在单独租用节点内手动实时迁移虚拟机

如需将虚拟机手动实时迁移到单独租用节点或在单独租用节点内手动实时迁移虚拟机,请使用 gcloud CLI 或 REST。

如果虚拟机的目标位置是节点组,则 Compute Engine 会选择节点组中同时具有足够的空间来存储虚拟机和最小备用容量的节点。

使用共享单租户节点组时,您无法在项目之间执行实时迁移。

执行此任务所需的权限

您必须拥有以下权限才能执行此任务:

  • 针对虚拟机的 compute.instances.update 权限。

gcloud

如需将虚拟机手动实时迁移到单独租用节点或在单独租用节点内手动实时迁移虚拟机,请使用以下 gcloud compute instances update 命令

gcloud compute instances update VM_NAME \
    ( --node=NODE \
      --node-group=NODE_GROUP \
      --node-affinity-file=NODE_AFFINITY_FILE )

替换以下内容:

  • VM_NAME:要更新其节点亲和性标签的虚拟机的名称。

请准确替换以下各项之一:

  • NODE:要将虚拟机实时迁移到的节点名称。

  • NODE_GROUP:要将虚拟机实时迁移到的节点组名称。

  • NODE_AFFINITY_FILE:包含可调度此虚拟机的节点配置的 JSON 文件的名称。如需了解详情,请参阅配置节点亲和性标签

REST

如需将虚拟机手动实时迁移到单独租用节点或在单独租用节点内手动实时迁移虚拟机,请使用以下 instances.update 方法

PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

{
  ...
  "scheduling": {
    "nodeAffinities": [
      {
        "key": "NODE_AFFINITY_LABEL_KEY",
        "operator": "IN",
        "values": [
          "[NODE_AFFINITY_LABEL_VALUE]"
        ]
      }
    ]
  }
  ...
}

替换以下内容:

  • PROJECT_ID:要更新其节点亲和性标签的虚拟机所属项目的 ID。

  • ZONE:要更新其节点亲和性标签的虚拟机的可用区。

  • VM_NAME:要更新其节点亲和性标签的虚拟机的名称。

  • NODE_AFFINITY_LABEL_KEY:以下字符串之一,用于指定将虚拟机实时迁移到节点组还是节点:

    虚拟机目标位置 要指定的键
    节点组 compute.googleapis.com/node-group-name
    节点 compute.googleapis.com/node-name
  • NODE_AFFINITY_LABEL_VALUE:要将虚拟机实时迁移到的节点组或节点的名称。

后续步骤