虚拟机实例在其生命周期中可在多个状态之间转换。创建虚拟机时,Google Distributed Cloud (GDC) 气隙设备会预配资源以启动虚拟机。接下来,虚拟机进入启动状态,准备进行首次启动。在启动期间和启动后,我们将虚拟机视为正在运行。正在运行的虚拟机可以在其生命周期内反复停止和重启,也可以反复暂停和恢复。
虚拟机状态定义
| 州 | 定义 | 
|---|---|
| Pending | 虚拟机已被系统接受,正在等待分配。 | 
| Provisioning | 与虚拟机关联的资源(例如 VirtualMachineDisk)正在进行预配和准备。 | 
| Starting | 正在准备运行虚拟机。 | 
| Running | 虚拟机正在运行。 | 
| Stopping | 虚拟机正在停止。 | 
| Stopped | 虚拟机已停止,且预计不会启动。 | 
| Paused | 虚拟机已暂停并处于冻结状态,该状态会保留。无法访问虚拟机。 | 
| Terminating | 虚拟机及其关联资源正在进行删除流程。 | 
| ErrorConfiguration | 虚拟机存在配置错误。无效的配置状态可能由以下原因导致: | 
| MachineTypeNotFound- 找不到虚拟机所引用的虚拟机类型,或者该类型正在被删除。 | |
| MachineDiskMisconfig- 虚拟机磁盘配置有误。 | |
| InterfaceCreationFailed- 网络接口创建失败。 | |
| CrashLoopBackOff | 虚拟机目前处于崩溃循环中,正在等待重试。 | 
| PendingIPAllocation | 虚拟机正在等待系统为其分配 IP 地址。 | 
| Unknown | 无法获取虚拟机状态,通常是因为与运行虚拟机的宿主主机通信时出现错误。 | 
| ErrorUnschedulable | 在调度虚拟机时发生错误,例如,由于资源请求或调度限制无法满足或不受支持。 | 
| DiskError | 虚拟机的一个或多个已挂接磁盘存在错误。 | 
| WaitingForDisk | 虚拟机正在等待一个或多个已连接的 VirtualMachineDisk准备就绪。 | 
| CrashLoopBackoff | 虚拟机因某种原因而持续崩溃。 | 
准备工作
如需使用 gdcloud 命令行界面 (CLI) 命令,请确保您已下载、安装并配置 gdcloud CLI。GDC 隔网设备的全部命令都使用 gdcloud 或 kubectl CLI,并且需要操作系统 (OS) 环境。
获取 kubeconfig 文件路径
如需针对管理 API 服务器运行命令,请确保您拥有以下资源:
- 找到管理 API 服务器名称,或向平台管理员 (PA) 询问服务器名称。 
- 登录并生成管理 API 服务器的 kubeconfig 文件(如果您还没有)。 
- 使用该路径替换这些说明中的 - MANAGEMENT_API_SERVER{"</var>"}}。
请求权限和访问权限
如需执行本页面中列出的任务,您必须具有 Project VirtualMachine Admin 角色。按照相应步骤验证或让项目 IAM 管理员在虚拟机所在项目的命名空间中分配项目 VirtualMachine 管理员 (project-vm-admin) 角色。
对于使用 GDC 控制台或 gdcloud CLI 的虚拟机操作,请让您的项目 IAM 管理员为您分配“Project VirtualMachine Admin”角色和“Project Viewer”角色 (project-viewer)。
检查虚拟机状态
每个虚拟机都会以虚拟机属性的形式报告其状态。检查虚拟机的状态,原因如下:
- 如果虚拟机存在问题。
- 确认虚拟机在启动后是否正在运行。
- 验证虚拟机是否处于 Paused或Stopped状态。
列出虚拟机以检查状态
以下过程展示了如何列出虚拟机、查看其状态并获取其他状态信息。
- 列出所有虚拟机并查看每个虚拟机的状态: - kubectl --kubeconfig MANAGEMENT_API_SERVER \ get virtualmachines.virtualmachine.gdc.goog -n PROJECT- 根据下表,将代码示例中的变量替换为您自己的值。 - 变量 - 定义 - MANAGEMENT_API_SERVER- 管理 API 服务器 - kubeconfig文件。- PROJECT- 虚拟机所在的 GDC 项目。 - 输出示例: - NAME STATUS AGE vm-1 Running 1d vm-2 Stopped 8d vm-3 ErrorConfiguration 1d
- 获取有关特定虚拟机状态的更多详细信息: - kubectl --kubeconfig MANAGEMENT_API_SERVER \ get virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT -o \ jsonpath='{"State:"}{.status.state}{"\n"}{"Reason:"}{.status.reason}{"\n"}{"Message:"}{.status.message}{"\n"}'- 替换以下内容: - 将 MANAGEMENT_API_SERVER替换为从gdcloud auth login命令获得的 Management API 服务器的kubeconfig文件。
- 将 VM_NAME替换为新虚拟机的名称。
- PROJECT替换为虚拟机所在的 GDC 项目。
 - 显示 - Reason和- Message值的示例输出:- State: ErrorConfiguration Reason: MachineDiskNotFound Message: VirtualMachineDisk disk-1 in namespace project-1 does not exist.- 您可能还会看到 - Reason和- Message的字段为空。这表示系统没有关于这些方面的报告。- Reason和- Message为空的输出示例:- State: Running Reason: Message:
- 将 
停止或重启虚拟机
在虚拟机生命周期内,您可能需要停止并重启虚拟机,或者删除虚拟机,以应对状态变化或常规管理虚拟机。如需停止、重置或删除虚拟机,请参阅以下页面: