如需将单租户虚拟机迁移到其他节点或节点组,您可以手动启动实时迁移。您也可以手动启动实时迁移,以将多租户虚拟机迁移到单独租用节点。如需了解如何将虚拟机迁移出单独租用节点,请参阅将虚拟机迁移出单独租用节点。
准备工作
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以选择以下任一选项向 Compute Engine 进行身份验证:
Select the tab for how you plan to use the samples on this page:
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
-
API 速率限制
手动实时迁移请求归类为查询 API 速率限制。
将虚拟机手动实时迁移到单独租用节点或在单独租用节点内手动实时迁移虚拟机
如需将虚拟机手动实时迁移到单独租用节点或在单独租用节点内手动实时迁移虚拟机,请使用 gcloud CLI 或 REST。
如果虚拟机的目标位置是节点组,则 Compute Engine 会选择节点组中同时具有足够的空间来存储虚拟机和最小备用容量的节点。
使用共享单租户节点组时,您无法在项目之间执行实时迁移。
执行此任务所需的权限
您必须拥有以下权限才能执行此任务:
-
针对虚拟机的
compute.instances.update
权限。
如需将虚拟机手动实时迁移到单独租用节点或在单独租用节点内手动实时迁移虚拟机,请使用以下 gcloud compute instances update
命令:
gcloud compute instances updateVM_NAME \ ( --node=NODE \ --node-group=NODE_GROUP \ --node-affinity-file=NODE_AFFINITY_FILE )
替换以下内容:
VM_NAME
:要更新其节点亲和性标签的虚拟机的名称。
请准确替换以下各项之一:
NODE
:要将虚拟机实时迁移到的节点名称。NODE_GROUP
:要将虚拟机实时迁移到的节点组名称。NODE_AFFINITY_FILE
:包含可调度此虚拟机的节点配置的 JSON 文件的名称。如需了解详情,请参阅配置节点亲和性标签。
如需将虚拟机手动实时迁移到单独租用节点或在单独租用节点内手动实时迁移虚拟机,请使用以下 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
:要将虚拟机实时迁移到的节点组或节点的名称。