您可以停止、启动和重启虚拟机,以支持应用的生命周期。例如,您可能需要更改分配的虚拟集中式处理单元 (vCPU) 数量或分配给虚拟机的内存量。您必须先停止虚拟机,然后才能修改配置。完成后,您必须重启电源状态以应用更改。本页提供了有关在此类流程中停止、启动和重启虚拟机的说明。
准备工作
如需使用 gdcloud
命令行界面 (CLI) 命令,请确保您已下载、安装并配置 gdcloud
CLI。Distributed Cloud 的所有命令都使用 gdcloud
或 kubectl
CLI,并且需要操作系统 (OS) 环境。
获取 kubeconfig 文件路径
如需针对管理 API 服务器运行命令,请确保您拥有以下资源:
登录并生成管理 API 服务器的 kubeconfig 文件(如果您还没有)。
使用管理 API 服务器的 kubeconfig 文件路径替换这些说明中的
MANAGEMENT_API_SERVER
。
如果您想尽可能缩短虚拟机启动时间,请在启动虚拟机之前按照尽可能缩短虚拟机启动时间 中的说明操作。
请求权限和访问权限
如需执行本页面中列出的任务,您必须具有 Project VirtualMachine Admin 角色。按照相应步骤验证或让项目 IAM 管理员在虚拟机所在项目的命名空间中分配项目 VirtualMachine 管理员 (project-vm-admin
) 角色。
对于使用 GDC 控制台或 gdcloud CLI 的虚拟机操作,请让您的项目 IAM 管理员为您分配“Project VirtualMachine Admin”角色和“Project Viewer”角色 (project-viewer
)。xs
停止虚拟机
停止虚拟机 (VM) 时,管理程序会取消分配与该实例关联的所有资源。虚拟机已关停。
使用 GDC 控制台或 kubectl
停止处于运行状态的虚拟机。
控制台
在导航菜单中,依次点击 Virtual Machines > Instances。
在虚拟机列表中,选中要停止的正在运行的虚拟机对应的复选框。
点击停止。
在确认对话框中,点击停止。
gdcloud
要停止虚拟机,请执行以下操作:
gdcloud compute instances stop VM_NAME --project PROJECT
- 将
VM_NAME
替换为虚拟机名称。 - 将
PROJECT
替换为虚拟机所在的 GDC 项目的名称。
kubectl
运行以下命令:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ edit virtualmachines.virtualmachine.gdc.goog VM_NAME \ -n PROJECT
在虚拟机的
spec
中找到runningState
字段,并将该字段的值更改为Stopped
。如果runningState
不在spec
中,请将runningState
添加到spec
并将值设置为Stopped
。spec: runningState: Stopped
验证虚拟机的状态:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ get virtualmachines.virtualmachine.gdc.goog VM_NAME \ -n PROJECT
使用这些定义来表示上述变量。
变量 定义 MANAGEMENT_API_SERVER_KUBECONFIG
管理 API 服务器 kubeconfig 文件。 VM_NAME
虚拟机的名称。 PROJECT
虚拟机的项目名称。
启动虚拟机
使用控制台或 kubectl
启动处于已停止状态的虚拟机。
控制台
在导航菜单中,依次点击 Virtual Machines > Instances。
在虚拟机列表中,选中要启动的已停止虚拟机的复选框。
点击开始。
在确认对话框中,点击开始。
gdcloud
如需启动虚拟机,请执行以下操作:
gdcloud compute instances start VM_NAME --project PROJECT
- 将
VM_NAME
替换为虚拟机名称。 - 将
PROJECT
替换为虚拟机所在的 GDC 项目的名称。
kubectl
运行以下命令:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ edit virtualmachines.virtualmachine.gdc.goog VM_NAME \ -n PROJECT
在虚拟机的
spec
中找到runningState
字段,并将该字段的值更改为Running
。spec: runningState: Running
验证虚拟机的状态:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ get virtualmachines.virtualmachine.gdc.goog VM_NAME \ -n PROJECT
在示例代码中使用这些变量定义。
变量 定义 MANAGEMENT_API_SERVER_KUBECONFIG
管理 API 服务器 kubeconfig 文件。 MANAGEMENT_API_SERVER_NAME
管理 API 服务器的名称。 NAMESPACE
虚拟机的命名空间。 VM_NAME
虚拟机的名称。 PROJECT
虚拟机的项目名称。
重启虚拟机
当您重启虚拟机时,机器会重置为初始状态,并且机器的内存内容会被清除。
使用控制台或 kubectl
重启处于运行状态的虚拟机。
控制台
在导航菜单中,依次点击 Virtual Machines > Instances。
在虚拟机列表中,选中要重启的正在运行的虚拟机对应的复选框。
点击重置。
在确认对话框中点击重置。
gdcloud
如需重置虚拟机,请执行以下操作:
gdcloud compute instances reset VM_NAME --project PROJECT
- 将
VM_NAME
替换为虚拟机名称。 - 将
PROJECT
替换为虚拟机所在的 GDC 项目的名称。
kubectl
获取客户端证书和密钥数据,以及 Management API 服务器。 在以下步骤中使用这些值:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG config view --raw -o \ jsonpath='{.users[?(@.name =="MANAGEMENT_API_SERVER_NAME-admin")].user.client-certificate-data}' | \ base64 -d > cert kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG config view --raw -o \ jsonpath='{.users[?(@.name == "MANAGEMENT_API_SERVER_NAME-admin")].user.client-key-data}' | \ base64 -d > key export APISERVER=`kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ config view --raw -o \ jsonpath='{.clusters[?(@.name == "MANAGEMENT_API_SERVER_NAME")].cluster.server}'`
使用
wget
命令发出 API 请求以重启虚拟机,并指定上一步中的证书和密钥:wget --method=PUT -O- --no-check-certificate --certificate cert --private-key key --content-on-error=on $APISERVER/apis/virtualmachineoperations.gdc.goog/v1/namespaces/PROJECT/virtualmachines/VM_NAME/restart
验证虚拟机的状态:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ get virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT
在示例代码中使用这些变量定义。
变量 定义 MANAGEMENT_API_SERVER_KUBECONFIG
管理 API 服务器 kubeconfig 文件。 MANAGEMENT_API_SERVER_NAME
管理 API 服务器的名称。 NAMESPACE
虚拟机的命名空间。 VM_NAME
虚拟机的名称。 PROJECT
虚拟机的项目名称。