启动和停止虚拟机

您可以停止、启动和重启虚拟机,以支持应用的生命周期。例如,您可能需要更改分配的虚拟中央处理单元 (vCPU) 数量或分配给虚拟机的内存量。您必须先停止虚拟机,然后才能修改配置。完成后,您必须重启电源状态以应用更改。本页提供了有关在此类过程中停止、启动和重启虚拟机的说明。

准备工作

如需使用 gdcloud 命令行界面 (CLI) 命令,请确保您已下载、安装并配置 gdcloud CLI。GDC 网闸隔离配置设备的全部命令都使用 gdcloud 或 kubectl CLI,并且需要操作系统 (OS) 环境。

获取 kubeconfig 文件路径

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

  1. 找到 Management API 服务器名称,或咨询平台管理员 (PA) 服务器名称。

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

  3. 使用该路径替换这些说明中的 MANAGEMENT_API_SERVER{"</var>"}}。

如果您想尽可能缩短虚拟机启动时间,请在启动虚拟机之前按照尽可能缩短虚拟机启动时间 中的说明操作。

请求权限和访问权限

如需执行本页面中列出的任务,您必须具有 Project VirtualMachine Admin 角色。按照相应步骤验证或让您的项目 IAM 管理员在虚拟机所在项目的命名空间中分配项目 VirtualMachine 管理员 (project-vm-admin) 角色。

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

停止虚拟机

停止虚拟机 (VM) 时,管理程序会取消分配与该实例关联的所有资源。虚拟机已关停。

使用 GDC 控制台或 kubectl 停止处于运行状态的虚拟机。

控制台

  1. 在导航菜单中,依次点击虚拟机 > 实例。

  2. 在虚拟机列表中,选中要停止的正在运行的虚拟机对应的复选框。

  3. 点击停止。

  4. 在确认对话框中,点击停止。

gdcloud

要停止虚拟机,请执行以下操作:

gdcloud compute instances stop VM_NAME --project PROJECT
  • 将 VM_NAME 替换为虚拟机名称。
  • 将 PROJECT 替换为虚拟机所在的 GDC 项目的名称。

kubectl

  1. 运行以下命令:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
       edit virtualmachines.virtualmachine.gdc.goog VM_NAME \
       -n PROJECT
    
  2. 在虚拟机的 spec 中找到 runningState 字段,并将该字段的值更改为 Stopped。如果 runningState 不在 spec 中,请将 runningState 添加到 spec 并将值设置为 Stopped。

    spec:
       runningState: Stopped
    
  3. 验证虚拟机的状态:

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

    使用这些定义来表示上述变量。

    变量定义
    MANAGEMENT_API_SERVERkubeconfig 路径。
    VM_NAME虚拟机的名称。
    PROJECT虚拟机的项目名称。

启动虚拟机

使用控制台或 kubectl 启动处于已停止状态的虚拟机。

控制台

  1. 在导航菜单中,依次点击虚拟机 > 实例。

  2. 在虚拟机列表中,选中要启动的已停止虚拟机的复选框。

  3. 点击开始。

  4. 在确认对话框中,点击开始。

gdcloud

如需启动虚拟机,请执行以下操作:

gdcloud compute instances start VM_NAME --project PROJECT
  • 将 VM_NAME 替换为虚拟机名称。
  • 将 PROJECT 替换为虚拟机所在的 GDC 项目的名称。

kubectl

  1. 运行以下命令:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
       edit virtualmachines.virtualmachine.gdc.goog VM_NAME \
       -n PROJECT
    
  2. 在虚拟机的 spec 中找到 runningState 字段,并将该字段的值更改为 Running。

    spec:
       runningState: Running
    
  3. 验证虚拟机的状态:

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

    在示例代码中使用这些变量定义。

    变量定义
    MANAGEMENT_API_SERVERkubeconfig 路径。
    NAMESPACE虚拟机的命名空间。
    VM_NAME虚拟机的名称。
    PROJECT虚拟机的项目名称。

重启虚拟机

当您重启虚拟机时,机器会重置为初始状态,并且机器的内存内容会被清除。

使用控制台或 kubectl 重启处于运行状态的虚拟机。

控制台

  1. 在导航菜单中,依次点击虚拟机 > 实例。

  2. 在虚拟机列表中,选中要重启的正在运行的虚拟机对应的复选框。

  3. 点击重置。

  4. 在确认对话框中点击重置。

gdcloud

如需重置虚拟机,请执行以下操作:

gdcloud compute instances reset VM_NAME --project PROJECT
  • 将 VM_NAME 替换为虚拟机名称。
  • 将 PROJECT 替换为虚拟机所在的 GDC 项目的名称。

kubectl

  1. 启动本地代理以连接到 Management API 服务器:

    kubectl --kubeconfig MANAGEMENT_API_SERVER proxy --port=8001 &
    PROXY_PID=$!
    

    将 MANAGEMENT_API_SERVER_KUBECONFIG 替换为 Management API 服务器 kubeconfig 文件。

  2. 通过代理发出 API 请求以重启虚拟机:

    curl -s -i -X PUT \
      http://127.0.0.1:8001/apis/virtualmachineoperations.gdc.goog/v1/namespaces/PROJECT/virtualmachines/VM_NAME/restart | head -n 1
    
    • 将 VM_NAME 替换为虚拟机名称。
    • 将 PROJECT 替换为虚拟机所在的 GDC 项目的名称。

    如果请求成功,则返回 HTTP/1.1 202 Accepted。

  3. 停止代理:

    kill $PROXY_PID
    
  4. 验证虚拟机的状态:

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