如果虛擬機器 (VM) 執行個體未附加本機 SSD,且不屬於代管執行個體群組 (MIG),您可以在停止執行個體後變更執行個體的機型。
如果現有機型不適合您在 VM 執行的工作負載,可以變更 VM 的機型。舉例來說,您可以在設定、開發和測試期間,以較小的機型啟動 VM,並在準備好處理正式環境工作負載時,將 VM 改為使用較大的機型。
您可以在下列情況使用此程序:
- 如要改用類似的機型,但 vCPU 數量或記憶體容量不同,且屬於同一機器系列,請按照下列步驟操作:
- 你可以將
n2-highcpu-4變更為n2-standard-4。 - 你可以將
c3d-standard-30變更為c3d-highmem-30。
- 你可以將
- 如要變更機型,請使用其他機器系列。這項功能僅支援第一代和第二代機器系列,不包括 T2A 和 A2 機器系列。例如:
- 你可以將
n2-standard-4變更為c2-standard-8。 - 你可以將
n1-highmem-4變更為n2d-standard-16。
- 你可以將
如要將使用第一代或第二代機器系列 (N1、N2、M1 等) 的 VM 機型變更為第三代或更新機器系列 (M3、C3、N4 等) 的機型,請按照「將工作負載移至新的運算執行個體」一文所述的程序操作。
您可以變更機型,但不會影響下列資源:
- VM 的 SSH 金鑰
- VM 設定,例如 VM 中繼資料
- 附加的 Persistent Disk 或 Hyperdisk 上的資料,包括已安裝的應用程式和應用程式資料
如要變更 MIG 中 VM 的機型,請參閱「在 MIG 中自動套用 VM 設定更新」。
事前準備
- 瞭解如何停止 VM。
- 瞭解機型。
-
如果尚未設定驗證,請先完成設定。
驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:
選取這個頁面上範例的預計用途分頁:
控制台
使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,不需要設定驗證。
Java
如要在本機開發環境中使用本頁的 Java 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。
-
安裝 Google Cloud CLI。
-
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
如果您使用本機殼層,請為使用者帳戶建立本機驗證憑證:
gcloud auth application-default login
如果您使用 Cloud Shell,則不需要執行這項操作。
如果系統傳回驗證錯誤,且您使用外部識別資訊提供者 (IdP),請確認您已 使用聯合身分登入 gcloud CLI。
詳情請參閱「 設定本機開發環境的驗證機制」。
Python
如要在本機開發環境中使用本頁的 Python 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。
-
安裝 Google Cloud CLI。
-
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
如果您使用本機殼層,請為使用者帳戶建立本機驗證憑證:
gcloud auth application-default login
如果您使用 Cloud Shell,則不需要執行這項操作。
如果系統傳回驗證錯誤,且您使用外部識別資訊提供者 (IdP),請確認您已 使用聯合身分登入 gcloud CLI。
詳情請參閱「 設定本機開發環境的驗證機制」。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。
-
必要的角色
如要取得變更 VM 機型所需的權限,請要求管理員在專案中授予您下列 IAM 角色:
- Compute 執行個體管理員 (v1) (
roles/compute.instanceAdmin.v1) -
如要連線至可做為服務帳戶執行的 VM:
服務帳戶使用者 (v1) (
roles/iam.serviceAccountUser)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這些預先定義的角色具備變更 VM 機型所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要變更 VM 的機型,必須具備下列權限:
-
compute.instances.setMachineType在 VM 上 -
compute.instances.start在 VM 上 -
compute.instances.stop在 VM 上
限制
- 如果運算執行個體已附加一或多個本機 SSD,請按照「將工作負載移至新的運算執行個體」一文中的操作說明進行。
- 如果運算執行個體使用暫時外部 IP 位址,修改執行個體的機型時,IP 位址可能會變更。如要保留 IP 位址,請先將其升級為靜態外部 IP 位址,再變更機型。
- 部分設定不支援變更運算執行個體的機型:
- 您無法變更裸機執行個體的機型。
- 如要將機型從第一代或第二代機器系列變更為第三代或更新機器系列的機型,請勿使用這個程序。請改為按照「將工作負載遷移至新的運算執行個體」一文中的操作說明進行。
- 如要將機型變更為 Arm 機型,請勿使用這個程序。請改為按照「將工作負載遷移至新的運算執行個體」一文中的操作說明進行。
- 如果是加速器最佳化執行個體,您無法使用這個程序變更機器類型。不過,如果是 G4、G2、A2 Standard 和 N1 執行個體,如要變更為類似的機型,但 GPU 數量不同,且屬於相同的加速器最佳化機器系列,請按照「修改加速器最佳化執行個體的 GPU 數量」一文中的操作說明進行。
- 如要將機型變更為新型機型,但也要在執行個體中新增其他網路介面,就無法使用這個程序。請改為按照「將工作負載遷移至新的運算執行個體」一文中的操作說明進行。
帳單相關注意事項
每個機型的計費費率不同,因此請務必瞭解變更機型對價格的影響。舉例來說,e2-standard-2 機型比 e2-micro 機型貴。
變更機型也可能會影響該 VM 的續用折扣。系統會針對同一區域的不同類別分別計算續用折扣。如果您變更機型,使新機型屬於不同類別,則 VM 後續的執行時間會計入新類別的續用折扣。
舉例來說,假設您有一個 VM,其 n2-standard-2 機型執行半個月。接著,您決定將機型變更為 m1-ultramem-40。完成這項變更後,Compute Engine 就會開始計算 VM 的執行時間,並將其計入記憶體最佳化 vCPU 和記憶體類別的續用折扣。
在帳單中,您會看到系統對變更機型前使用的n2-standard-2機型套用續用折扣,如果 VM 在當月剩餘時間內,至少有 25% 的時間是使用 m1-ultramem-40,系統也會對 m1-ultramem-40 套用續用折扣。
改用較小的機型
如果從資源較多的機型改用資源較少的機型,例如從 e2-standard-8 機型改用 e2-standard-2,可能會遇到硬體資源問題或效能限制,因為較小的機型效能不如較大的機型。請確認新機型可支援目前在 VM 上執行的任何應用程式或服務,或更新服務和應用程式,以便在較小的機型上執行。
變更機型前,請先查看適當大小建議。如要瞭解 Compute Engine 規模調整建議,請參閱「為 VM 執行個體套用機型建議」。
最佳做法
以下列出幾項最佳做法,協助您順利變更 VM 機型。
使用快照定期備份 Persistent Disk 資料。 建議您先建立快照,再變更機型。如要確保新機型能夠支援現有 VM 上的資料,可以建立永久磁碟快照,並使用該快照啟動第二個 VM (採用新機型),確認 VM 啟動成功。
將其他磁碟新增至
/etc/fstab檔案。 如果 VM 附加其他磁碟,請務必將這些磁碟新增至/etc/fstab檔案,這樣 VM 重新啟動時,這些磁碟就會自動掛接。請先建立預留項目,再變更機型。如要避免資源可用性相關錯誤,請在新的機型可供預留時,為這些機型建立 Compute Engine 預留項目,以便在可用區內預留。預留項目可確保您在需要時能使用資源。
如要建立預訂,請完成下列步驟:
建立預留項目 (或找出現有預留項目),並確保預留項目與預計使用的 VM 具有相同的屬性。預訂的 VM 數量必須大於或等於要變更的 VM 數量。如要防止其他 VM 使用這個預留項目,請使用
specificReservationRequired選項。確認預計使用的 VM 能否使用預留項目:
- 確認 VM 是否具備正確的預留項目親和性。
- 變更 VM 前,請確認預留項目有足夠的容量。
變更機型
您只能變更已停止 VM 的機型。只有當 VM 處於TERMINATED 狀態時,才視為已停止。您無法變更執行中 VM 的機型。
如要將機型升級至最新一代,請先參閱「評估 VM 遷移選項」。
控制台
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
在「Name」(名稱) 欄中,按一下要變更機型的 VM 名稱。
在「VM 執行個體詳細資料」頁面中,完成下列步驟:
- 如果 VM 正在執行,請按一下 「停止」停止 VM。如果沒有「停止」選項,請依序點選 「更多動作」>「停止」。
- 如要編輯 VM,請按一下「編輯」。
在「機器設定」部分,選取要使用的機型,或建立自訂機型。
點按「儲存」,儲存變更。
重新啟動 VM。
gcloud
使用
gcloud compute instances stop指令停止 VM:gcloud compute instances stop VM_NAME
將
VM_NAME替換為包含要變更機型的 VM。使用
gcloud compute instances set-machine-type指令變更機型:gcloud compute instances set-machine-type VM_NAME \ --machine-type NEW_MACHINE_TYPE將
NEW_MACHINE_TYPE替換為 VM 的新機器類型。機型可以是下列任一項:使用
gcloud compute instances start指令啟動 VM:gcloud compute instances start VM_NAME
將
VM_NAME替換為您變更的 VM 名稱。
Java
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 Compute Engine 快速入門導覽課程」中的 Java 設定說明操作。詳情請參閱「Compute Engine Java API 參考文件」。
如要向 Compute Engine 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 Compute Engine 快速入門導覽課程」中的 Python 設定說明操作。詳情請參閱「Compute Engine Python API 參考文件」。
如要向 Compute Engine 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
REST
使用
instances.stop方法停止 VM:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop
更改下列內容:
PROJECT_ID:專案 IDZONE:包含 VM 的可用區VM_NAME:包含要變更機型的 VM
使用
instances.setMachineType方法變更機型:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMachineType
在要求主體中提供更新後的
machineType:{ machineType: "zones/MACHINE_TYPE_ZONE/machineTypes/NEW_MACHINE_TYPE" }更改下列內容:
使用
instances.start方法啟動 VM:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/start
更改下列內容:
PROJECT_ID:專案 IDZONE:包含 VM 的可用區VM_NAME:您變更的 VM 名稱
後續步驟
- 瞭解機型建議。
- 瞭解代管執行個體群組。
- 瞭解可擴充及具有彈性的應用程式模式。
- 如要更新第一代或第二代 VM,改用第三代或更新的機器系列,請參閱「將工作負載移至新的運算執行個體」。