管理 VM 執行個體生命週期

VM 執行個體在生命週期中,可能會經歷許多狀態。建立 VM 時,Google Distributed Cloud (GDC) 實體隔離設備會佈建資源來啟動 VM。接著,VM 會進入啟動狀態,準備初次啟動。啟動期間和啟動後,系統會將 VM 視為正在執行。在整個運作生命週期中,執行中的 VM 可以多次停止及重新啟動,或暫停及繼續。

VM 狀態定義

狀態 定義
Pending 系統已接受 VM,正在等待分配。
Provisioning 系統正在佈建及準備與 VM 相關聯的資源,例如 VirtualMachineDisk
Starting 正在準備執行 VM。
Running VM 正在執行。
Stopping VM 正在停止。
Stopped VM 已停止,且預計不會啟動。
Paused VM 會暫停並處於凍結狀態,且會保留該狀態。無法存取 VM。
Terminating 系統正在刪除 VM 和相關資源。
ErrorConfiguration 虛擬機發生設定錯誤。無效的設定狀態可能由下列原因造成:
MachineTypeNotFound - 系統找不到 VM 參照的 VM 類型,或該類型正在刪除中。
MachineDiskMisconfig - VM 磁碟設定有誤。
InterfaceCreationFailed - 無法建立網路介面。
CrashLoopBackOff VM 目前處於當機迴圈,等待重試。
PendingIPAllocation VM 正在等待系統指派 IP 位址。
Unknown 無法取得 VM 狀態,通常是因為與 VM 執行的主機通訊時發生錯誤。
ErrorUnschedulable 排定 VM 時發生錯誤,例如資源要求或排程限制無法滿足或支援。
DiskError 虛擬機的其中一或多個附加磁碟發生錯誤。
WaitingForDisk VM 正在等待一或多個附加的 VirtualMachineDisk 準備就緒。
CrashLoopBackoff VM 持續異常終止。

事前準備

如要使用 gdcloud 指令列介面 (CLI) 指令,請務必下載、安裝及設定 gdcloud CLI。GDC 氣隙裝置的所有指令都使用 gdcloudkubectl CLI,且需要作業系統 (OS) 環境。

取得 kubeconfig 檔案路徑

如要對 Management API 伺服器執行指令,請確認您具備下列資源:

  1. 找出 Management API 伺服器名稱,或詢問平台管理員 (PA) 伺服器名稱。

  2. 登入並產生 Management API 伺服器的 kubeconfig 檔案 (如果沒有)。

  3. 請使用路徑取代這些操作說明中的 MANAGEMENT_API_SERVER{"</var>"}}

要求權限和存取權

如要執行本頁列出的工作,您必須具備專案虛擬機器管理員角色。請按照步驟驗證,或請專案 IAM 管理員在 VM 所在的專案命名空間中指派專案 VirtualMachine 管理員 (project-vm-admin) 角色給您。

如要使用 GDC 控制台或 gdcloud CLI 執行 VM 作業,請要求專案 IAM 管理員同時指派專案 VirtualMachine 管理員角色和專案檢視者 (project-viewer) 角色。

檢查 VM 狀態

每個 VM 都會將其狀態做為 VM 屬性的一部分回報。基於下列任一原因檢查 VM 狀態:

  • 如果 VM 發生問題。
  • 確認 VM 啟動後是否正在執行。
  • 確認 VM 處於 PausedStopped 狀態。

列出 VM 以檢查狀態

以下程序說明如何列出 VM、查看 VM 狀態,以及取得其他狀態資訊。

  1. 列出所有 VM,並查看每個 VM 的狀態:

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

    請根據下表,將程式碼範例中的變數替換成自己的值。

    變數定義
    MANAGEMENT_API_SERVER 管理 API 伺服器 kubeconfig 檔案。
    PROJECT VM 所在的 GDC 專案。

    輸出內容範例:

    NAME          STATUS                    AGE
    vm-1          Running                    1d
    vm-2          Stopped                    8d
    vm-3          ErrorConfiguration         1d
    
  2. 如要取得特定 VM 狀態的詳細資料,請按照下列步驟操作:

    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 替換為新 VM 的名稱。
    • PROJECT,其中 VM 所在的 GDC 專案。

    輸出範例,顯示 ReasonMessage 值:

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

    ReasonMessage 也可能會出現空白欄位。這表示系統沒有任何相關資訊可供回報。

    ReasonMessage 為空的輸出範例:

    State: Running
    Reason:
    Message:
    

停止或重新啟動 VM

在 VM 生命週期中,您可能需要停止及重新啟動 VM,或刪除 VM,以回應狀態變更或一般管理 VM。如要停止、重設或刪除 VM,請參閱下列頁面: