管理虚拟机实例生命周期

虚拟机实例在其生命周期中可在多个状态之间转换。创建虚拟机时,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。Distributed Cloud 的所有命令都使用 gdcloudkubectl CLI,并且需要操作系统 (OS) 环境。

获取 kubeconfig 文件路径

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

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

  2. 使用管理 API 服务器的 kubeconfig 文件路径替换这些说明中的 MANAGEMENT_API_SERVER

请求权限和访问权限

如需执行本页面中列出的任务,您必须具有 Project VirtualMachine Admin 角色。按照相关步骤验证您是否在虚拟机所在项目的命名空间中拥有 Project VirtualMachine Admin (project-vm-admin) 角色。

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

检查虚拟机状态

每个虚拟机都会以虚拟机属性的形式报告其状态。检查虚拟机的状态,原因如下:

  • 如果虚拟机存在问题。
  • 确认虚拟机在启动后是否正在运行。
  • 验证虚拟机是否处于 PausedStopped 状态。

列出虚拟机以检查状态

以下过程展示了如何列出虚拟机、查看其状态并获取其他状态信息。

  1. 列出所有虚拟机并查看每个虚拟机的状态:

    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
    
  2. 获取有关特定虚拟机状态的更多详细信息:

    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 命令获取的管理 API 服务器的 kubeconfig 文件。
    • VM_NAME 替换为新虚拟机的名称。
    • PROJECT 替换为虚拟机所在的 GDC 项目。

    显示 ReasonMessage 值的示例输出:

    State: ErrorConfiguration
    Reason: MachineDiskNotFound
    Message: VirtualMachineDisk disk-1 in namespace project-1 does not exist.
    

    您可能还会看到 ReasonMessage 的字段为空。这表示系统没有关于这些方面的报告。

    ReasonMessage 为空的输出示例:

    State: Running
    Reason:
    Message:
    

停止或重启虚拟机

在虚拟机生命周期内,您可能需要停止并重启虚拟机,或者删除虚拟机,以应对状态变化或常规管理虚拟机。如需停止、重置或删除虚拟机,请参阅以下页面: