您可以停止、啟動及重新啟動 VM,以支援應用程式的生命週期。舉例來說,您可能想變更指派的虛擬中央處理單元 (vCPU) 數量,或是分配給 VM 的記憶體量。您必須先停止 VM,才能編輯設定。完成後,您必須切換電源狀態,變更才會生效。本頁面提供相關操作說明,說明如何在這些程序中停止、啟動及重新啟動 VM。
事前準備
如要使用 gdcloud
指令列介面 (CLI) 指令,請務必下載、安裝及設定 gdcloud
CLI。Distributed Cloud 的所有指令都使用 gdcloud
或 kubectl
CLI,且需要作業系統 (OS) 環境。
取得 kubeconfig 檔案路徑
如要對 Management API 伺服器執行指令,請確認您具備下列資源:
登入並產生 Management API 伺服器的 kubeconfig 檔案 (如果沒有)。
使用 Management API 伺服器的 kubeconfig 檔案路徑,取代這些操作說明中的
MANAGEMENT_API_SERVER
。
如要盡量縮短 VM 啟動時間,請先按照「盡量縮短 VM 啟動時間 」一文中的指示操作,再啟動 VM。
要求權限和存取權
如要執行本頁列出的工作,您必須具備專案虛擬機器管理員角色。請按照步驟驗證,或請專案 IAM 管理員在 VM 所在的專案命名空間中指派專案 VirtualMachine 管理員 (project-vm-admin
) 角色給您。
如要使用 GDC 控制台或 gdcloud CLI 執行 VM 作業,請要求專案 IAM 管理員指派專案 VirtualMachine 管理員角色和專案檢視者 (project-viewer
) 角色。xs
停止 VM
停止虛擬機器 (VM) 時,管理程序會取消分配與執行個體相關的所有資源。VM 已關機。
使用 GDC 控制台或 kubectl
停止處於執行狀態的 VM。
主控台
在導覽選單中,依序點選「Virtual Machines」>「Instances」。
在 VM 清單中,找到要停止的執行中 VM,然後勾選對應的核取方塊。
按一下「停止」。
在確認對話方塊中,按一下「停止」。
gdcloud
如要停止 VM:
gdcloud compute instances stop VM_NAME --project PROJECT
- 將
VM_NAME
替換為 VM 名稱。 - 將
PROJECT
替換為 VM 所在的 GDC 專案名稱。
kubectl
執行下列指令:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ edit virtualmachines.virtualmachine.gdc.goog VM_NAME \ -n PROJECT
在 VM 的
spec
中尋找runningState
欄位,然後將欄位值變更為Stopped
。如果runningState
不在spec
中,請將runningState
新增至spec
,並將值設為Stopped
。spec: runningState: Stopped
確認 VM 的狀態:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ get virtualmachines.virtualmachine.gdc.goog VM_NAME \ -n PROJECT
請使用這些定義來設定上述變數。
變數 定義 MANAGEMENT_API_SERVER_KUBECONFIG
管理 API 伺服器 kubeconfig 檔案。 VM_NAME
VM 名稱。 PROJECT
虛擬機的專案名稱。
啟動 VM
使用控制台或 kubectl
從停止狀態啟動 VM。
主控台
在導覽選單中,依序點選「Virtual Machines」>「Instances」。
在 VM 清單中,選取要啟動的已停止 VM 核取方塊。
按一下「啟動」。
在確認對話方塊中,按一下「開始」。
gdcloud
如要啟動 VM:
gdcloud compute instances start VM_NAME --project PROJECT
- 將
VM_NAME
替換為 VM 名稱。 - 將
PROJECT
替換為 VM 所在的 GDC 專案名稱。
kubectl
執行下列指令:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ edit virtualmachines.virtualmachine.gdc.goog VM_NAME \ -n PROJECT
在 VM 的
spec
中尋找runningState
欄位,然後將欄位值變更為Running
。spec: runningState: Running
確認 VM 狀態:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ get virtualmachines.virtualmachine.gdc.goog VM_NAME \ -n PROJECT
請在範例程式碼中使用這些變數定義。
變數 定義 MANAGEMENT_API_SERVER_KUBECONFIG
管理 API 伺服器 kubeconfig 檔案。 MANAGEMENT_API_SERVER_NAME
管理 API 伺服器的名稱。 NAMESPACE
VM 命名空間。 VM_NAME
VM 名稱。 PROJECT
虛擬機的專案名稱。
重新啟動 VM
重新啟動 VM 時,機器會重設為初始狀態,並抹除機器的記憶體內容。
使用控制台或 kubectl
重新啟動處於執行狀態的 VM。
主控台
在導覽選單中,依序點選「Virtual Machines」>「Instances」。
在 VM 清單中,選取要重新啟動的執行中 VM 核取方塊。
按一下「重設」。
按一下確認對話方塊中的「重設」。
gdcloud
如要重設 VM:
gdcloud compute instances reset VM_NAME --project PROJECT
- 將
VM_NAME
替換為 VM 名稱。 - 將
PROJECT
替換為 VM 所在的 GDC 專案名稱。
kubectl
取得用戶端憑證和金鑰資料,以及 Management API 伺服器。在後續步驟中使用這些值:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG config view --raw -o \ jsonpath='{.users[?(@.name =="MANAGEMENT_API_SERVER_NAME-admin")].user.client-certificate-data}' | \ base64 -d > cert kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG config view --raw -o \ jsonpath='{.users[?(@.name == "MANAGEMENT_API_SERVER_NAME-admin")].user.client-key-data}' | \ base64 -d > key export APISERVER=`kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ config view --raw -o \ jsonpath='{.clusters[?(@.name == "MANAGEMENT_API_SERVER_NAME")].cluster.server}'`
使用
wget
指令提出 API 要求,重新啟動 VM,並指定上一步中的憑證和金鑰:wget --method=PUT -O- --no-check-certificate --certificate cert --private-key key --content-on-error=on $APISERVER/apis/virtualmachineoperations.gdc.goog/v1/namespaces/PROJECT/virtualmachines/VM_NAME/restart
確認 VM 狀態:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ get virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT
在範例程式碼中使用這些變數定義。
變數 定義 MANAGEMENT_API_SERVER_KUBECONFIG
管理 API 伺服器 kubeconfig 檔案。 MANAGEMENT_API_SERVER_NAME
管理 API 伺服器的名稱。 NAMESPACE
VM 命名空間。 VM_NAME
VM 名稱。 PROJECT
虛擬機的專案名稱。