本文档介绍了如何在 Google Distributed Cloud (GDC) 网闸隔离配置中启动、停止和重启虚拟机 (VM) 实例。
您可以停止、启动和重启虚拟机,以支持应用的生命周期。例如,您可能需要更改分配的虚拟中央处理器 (vCPU) 数量或分配给虚拟机的内存分配量。您必须先停止虚拟机,然后才能修改配置。完成后,您必须重启电源状态以应用更改。
本文档面向平台管理员或应用运维人员群组中需要在 Distributed Cloud 环境中启动、停止和重启虚拟机实例的开发者。如需了解详情,请参阅适用于 GDC 网闸隔离配置文档的受众群体。
准备工作
如需使用 gdcloud 命令行界面 (CLI) 命令,请确保您已下载、安装并配置 gdcloud CLI。Distributed Cloud 的所有命令都使用 gdcloud 或 kubectl CLI,并且需要操作系统 (OS) 环境。
获取 kubeconfig 文件路径
如需针对 Management API 服务器运行命令,请确保您拥有以下资源:
如果您没有 Management API 服务器的 kubeconfig 文件,请登录并生成该文件。
在这些说明中,请使用 Management API 服务器的 kubeconfig 文件的路径替换
MANAGEMENT_API_SERVER。
如果您想最大限度地缩短虚拟机启动时间,请在启动虚拟机之前按照最大限度地缩短虚拟机启动时间 中的说明操作。
申请 IAM 角色
请与您的 IAM 项目管理员联系,请求在您的项目中授予以下角色:
Virtual Machine Project Admin (
project-vm-admin):在项目命名空间中创建、修改、列出和删除虚拟机。Project Viewer(
project-viewer):查看项目命名空间中的所有资源。
所有虚拟机角色都必须绑定到虚拟机所在项目的命名空间。 按照相关步骤验证您的访问权限。
停止虚拟机
当您停止虚拟机 (VM) 时,Hypervisor 会取消分配与该实例关联的所有资源。虚拟机已关停。
使用 GDC 控制台或 kubectl 停止处于运行状态的虚拟机。
控制台
在导航菜单中,点击虚拟机 > 实例。
在虚拟机列表中,选中要停止的正在运行的虚拟机对应的复选框。
点击停止。
在确认对话框中,点击停止。
gdcloud
要停止虚拟机,请执行以下操作:
gdcloud compute instances stop VM_NAME \
--project PROJECT
- 将
VM_NAME替换为虚拟机名称。 - 将
PROJECT替换为虚拟机所在的 GDC 项目的名称。
kubectl
运行以下命令:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ -n PROJECT \ edit virtualmachines.virtualmachine.gdc.goog VM_NAME在虚拟机的
spec中找到runningState字段,并将该字段的值更改为Stopped。如果runningState不在spec中,请将runningState添加到spec,并将值设置为Stopped。spec: runningState: Stopped验证虚拟机的状态:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ -n PROJECT \ get virtualmachines.virtualmachine.gdc.goog VM_NAME使用上述变量的这些定义。
变量 定义 MANAGEMENT_API_SERVER_KUBECONFIGManagement API 服务器 kubeconfig 文件。 VM_NAME虚拟机的名称。 PROJECT虚拟机的项目名称。
启动虚拟机
使用控制台或 kubectl 启动处于已停止状态的虚拟机。
控制台
在导航菜单中,点击虚拟机 > 实例。
在虚拟机列表中,选中要启动的已停止虚拟机对应的复选框。
点击开始。
在确认对话框中,点击开始。
gdcloud
如需启动虚拟机,请执行以下操作:
gdcloud compute instances start VM_NAME --project PROJECT
- 将
VM_NAME替换为虚拟机名称。 - 将
PROJECT替换为虚拟机所在的 GDC 项目的名称。
kubectl
运行以下命令:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ -n PROJECT \ edit virtualmachines.virtualmachine.gdc.goog VM_NAME在虚拟机的
spec中查找runningState字段,并将该字段的值更改为Running。spec: runningState: Running验证虚拟机状态:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ -n PROJECT \ get virtualmachines.virtualmachine.gdc.goog VM_NAME在示例代码中,请使用这些变量定义。
变量 定义 MANAGEMENT_API_SERVER_KUBECONFIGManagement API 服务器 kubeconfig 文件。 MANAGEMENT_API_SERVER_NAMEManagement API 服务器的名称。 VM_NAME虚拟机的名称。 PROJECT虚拟机的项目名称。
重启虚拟机
重启虚拟机时,机器会重置为初始状态,并且机器内存中的内容会被擦除。
使用控制台或 kubectl 重启处于运行状态的虚拟机。
控制台
在导航菜单中,点击虚拟机 > 实例。
在虚拟机列表中,选中要重启的正在运行的虚拟机对应的复选框。
点击重置。
在确认对话框中点击重置。
gdcloud
重置虚拟机:
gdcloud compute instances reset VM_NAME --project PROJECT
- 将
VM_NAME替换为虚拟机名称。 - 将
PROJECT替换为虚拟机所在的 GDC 项目的名称。
kubectl
启动 Management API 服务器的本地代理:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG proxy --port=8001 & PROXY_PID=$!将
MANAGEMENT_API_SERVER_KUBECONFIG替换为 Management API 服务器 kubeconfig 文件。发出 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。停止代理:
kill $PROXY_PID验证虚拟机状态:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ -n PROJECT \ get virtualmachines.virtualmachine.gdc.goog VM_NAME