您可以停止、啟動及重新啟動 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 \ -n PROJECT \ edit virtualmachines.virtualmachine.gdc.goog VM_NAME
- 在 VM 的 - spec中尋找- runningState欄位,然後將欄位值變更為- Stopped。如果- runningState不在- spec中,請將- runningState新增至- spec,並將值設為- Stopped。- spec: runningState: Stopped
- 確認 VM 的狀態: - kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ -n PROJECT \ get virtualmachines.virtualmachine.gdc.goog VM_NAME- 請使用這些定義來設定上述變數。 - 變數 - 定義 - 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 \ -n PROJECT \ edit virtualmachines.virtualmachine.gdc.goog VM_NAME
- 在 VM 的 - spec中尋找- runningState欄位,然後將該欄位的值變更為- Running。- spec: runningState: Running
- 確認 VM 狀態: - kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ -n PROJECT \ get virtualmachines.virtualmachine.gdc.goog VM_NAME- 請在範例程式碼中使用這些變數定義。 - 變數 - 定義 - MANAGEMENT_API_SERVER_KUBECONFIG- 管理 API 伺服器 kubeconfig 檔案。 - MANAGEMENT_API_SERVER_NAME- 管理 API 伺服器的名稱。 - 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 \ -n PROJECT \ get virtualmachines.virtualmachine.gdc.goog VM_NAME- 在範例程式碼中使用這些變數的定義。 - 變數 - 定義 - MANAGEMENT_API_SERVER_KUBECONFIG- 管理 API 伺服器 kubeconfig 檔案。 - MANAGEMENT_API_SERVER_NAME- 管理 API 伺服器的名稱。 - VM_NAME- VM 名稱。 - PROJECT- 虛擬機的專案名稱。