本文說明如何在 Google Distributed Cloud (GDC) Air-gapped 中啟動、停止及重新啟動虛擬機器 (VM) 執行個體。
您可以停止、啟動及重新啟動 VM,支援應用程式的生命週期。舉例來說,您可能想變更指派的虛擬中央處理單元 (vCPU) 數量,或是分配給 VM 的記憶體容量。您必須先停止 VM,才能編輯設定。完成後,您必須切換電源狀態,變更才會生效。
本文適用於平台管理員或應用程式作業人員群組的開發人員,這類人員需要在 Distributed Cloud 環境中啟動、停止及重新啟動 VM 執行個體。詳情請參閱 GDC 氣隙環境適用的目標對象說明文件。
事前準備
如要使用 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 角色
請與專案 IAM 管理員聯絡,要求對方授予您專案的下列角色:
虛擬機器專案管理員 (
project-vm-admin):在專案命名空間中建立、修改、列出及刪除 VM。專案檢視者(
project-viewer):查看專案命名空間中的所有資源。
所有 VM 角色都必須繫結至 VM 所在的專案命名空間。 按照步驟驗證存取權。
停止 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_KUBECONFIGManagement API 伺服器 kubeconfig 檔案。 VM_NAMEVM 名稱。 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_KUBECONFIGManagement API 伺服器 kubeconfig 檔案。 MANAGEMENT_API_SERVER_NAME管理 API 伺服器的名稱。 VM_NAMEVM 名稱。 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_KUBECONFIGManagement API 伺服器 kubeconfig 檔案。 MANAGEMENT_API_SERVER_NAME管理 API 伺服器的名稱。 VM_NAMEVM 名稱。 PROJECT虛擬機的專案名稱。