VM 執行個體在生命週期中,可能會經歷許多狀態。建立 VM 時,Google Distributed Cloud (GDC) air-gapped 會佈建資源來啟動 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。Distributed Cloud 的所有指令都使用 gdcloud 或 kubectl CLI,且需要作業系統 (OS) 環境。
取得 kubeconfig 檔案路徑
如要對 Management API 伺服器執行指令,請確認您具備下列資源:
登入並產生 Management API 伺服器的 kubeconfig 檔案 (如果沒有)。
使用 Management API 伺服器的 kubeconfig 檔案路徑,取代這些操作說明中的
MANAGEMENT_API_SERVER。
要求權限和存取權
如要執行本頁列出的工作,您必須擁有專案虛擬機器管理員角色。按照步驟驗證您在 VM 所在專案的命名空間中,是否具備專案 VirtualMachine 管理員 (project-vm-admin) 角色。
如要使用 GDC 控制台或 gdcloud CLI 執行 VM 作業,請要求專案 IAM 管理員指派「專案 VirtualMachine 管理員」角色和「專案檢視者」角色 (project-viewer) 給您。
檢查 VM 狀態
每個 VM 都會將其狀態做為 VM 屬性的一部分回報。基於下列任何原因,檢查 VM 的狀態:
- 如果 VM 有問題。
- 確認 VM 啟動後是否正在執行。
- 確認 VM 處於
Paused或Stopped狀態。
列出 VM 以檢查狀態
以下程序說明如何列出 VM、查看 VM 狀態,以及取得其他狀態資訊。
列出所有 VM,並查看每個 VM 的狀態:
kubectl --kubeconfig MANAGEMENT_API_SERVER \ -n PROJECT \ get virtualmachines.virtualmachine.gdc.goog請根據下表,將程式碼範例中的變數替換成自己的值。
變數 定義 MANAGEMENT_API_SERVER管理 API 伺服器 kubeconfig 檔案。 PROJECTVM 所在的 GDC 專案。 輸出內容範例:
NAME STATUS AGE vm-1 Running 1d vm-2 Stopped 8d vm-3 ErrorConfiguration 1d如要取得特定 VM 狀態的詳細資料,請按照下列步驟操作:
kubectl --kubeconfig MANAGEMENT_API_SERVER \ -n PROJECT \ get virtualmachines.virtualmachine.gdc.goog VM_NAME \ -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 專案。
輸出範例,顯示
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:
停止或重新啟動 VM
在 VM 生命週期中,您可能需要停止及重新啟動 VM,或刪除 VM,以回應狀態變更或一般管理 VM。如要停止、重設或刪除 VM,請參閱下列頁面: