GCP 運算成本怎麼省?節省雲端花費利器 Spot VM 介紹與設定教學

隨著愈來愈多企業擁抱雲端,雲端成本管理策略也日益重要。Google Cloud 平台提供許多優化 VM(Compute Engine)的計費方式,除了今天要介紹的 Spot VM 之外,還包括承諾使用折扣方案等方式。本文將會簡介 Spot VM、Spot VM 對於企業的益處、最佳實踐,並帶您手把手建立和使用 Spot VM。

什麼是Spot VM?

  1. Google Cloud Spot VM 是一種按需求定價的 VM,它的價格比標準 VM 便宜許多,但可能會因為供需變化而被中斷。因此,如果您打算使用 Spot VM,則需要準備好 VM 被中斷時的應對措施。
  2. 由於 Spot VM 可能被中斷,所以適合處理非營運核心的業務或工作負載。
  3. Spot VM 的價格會根據供需情況而變化,當供應超過需求時,價格會下降;當需求增加時,價格也會上升。因此 Spot VM 可以讓您在成本和性能之間找到一個平衡點。
  4. 如果您希望使用 Spot VM,可以在 GCP 上透過設定來啟動 VM,也可以設定最高價來最佳化成本控管,當 VM 實際價格超過您設定的最高價格時,您的 VM 就會被中斷;同時您也可以透過預設停止或永久保留 VM 來指定 VM 中斷時的應對措施,還可以使用預測模型來預測 VM 可能中斷的時間。

Spot VM 適用場景

Spot VM 非常適合批量計算、高性能計算(HPC)工作負載、ML 模型訓練和無狀態的 Web 應用程式。能夠處理 Instance 故障/終止的容器化工作負載也非常適合使用 Spot VM。Spot VM 可以和與 Google Kubernetes Engine(GKE)、GKE Autopilot、Batch、Dataproc 和 Dataflow VM 共同使用,極大化的降低成本。

由於 Spot VM 可能會被先占(或中斷),因此建議將 Spot VM 用於可容錯的工作負載,例如:3D 渲染、基因組處理和財務建模;反之,若是需要高可用性(例如有狀態或無法容錯)的工作負載則不太適合。

了解更多 Spot VM 適用場景:解析 Google Cloud Spot VM 之五大應用和最佳實踐

使用Spot VM的好處

  1. 簡潔且可預測的定價:Spot VM 提供最少60%及高達91%的計算成本折扣,由下方價格表可知,Google Cloud 提供可預測的定價,每個月最多更改一次,讓您能夠更好地預測成本並避免超支。
  2. 無時間限制:Spot VM 可無限期運行,直到 Compute Engine 需要收回資源為止。
圖一:以 E2 機器類型為例之價格表格
icon/enlarge

使用 Managed Instance Groups 來維護和自動化 Spot VM:

實務上在使用 Spot VM 時,常常會搭配 Managed Instance Groups(MIG)來使用,當運行中的 Spot VM 因為 GCP 運算資源調度而被終止時,若是沒有使用 MIG 的話,就 只能等待 GCP 資源充裕時才可以「手動」重啟該 VM,而若是在 MIG 內的 Spot VM 被 GCP 終止的話,則該 MIG 會「自動」嘗試使用 Instance Template 來重新建立虛擬機,如此一來就可以大幅降低維運人員的負擔。

Managed Instance Groups(MIG)為客戶提供了一種確保其 VM 組能夠滿足應用和客戶需求的方式。MIG 類似於其他全托管的服務和功能,允許 Google Cloud 自動執行部分操作,從而減輕您手動管理的負擔。

MIG 可以處理滾動更新、藍/綠部署,而且可以根據配置的指標自動擴展或縮小實例組。當與 Spot VM 一起使用時,MIG 將在擴展或因先占而替換 VM 時提供相同的好處。如果 Spot VM 不可用,則 MIG 將持續請求額外的 Spot VM,直到其性能滿足要求。但請注意,如果所有的 Spot VM 都被先占,MIG 將無法防止停機,但是當 Spot VM 再次可用時,MIG 將在無需手動干預的情況下啟動新的 VM。

除此之外,Google Cloud 利用 Spot VM 提供了一個完全托管的批次作業,稱為 Google Batch。使用 Batch 不會產生額外的費用,它可以讓您創建和運行作業,每個作業都會自動配置和使用執行其任務所需的資源。現在讓我們來看看建立和管理 Spot VM 的不同方法。

建立和使用 Spot VM

現在我們對 Spot VM 的概念和適用場景有了更好的理解,接下來讓我們來一步一步地了解如何建立和管理它們:

一、 使用 Google Cloud 控制台來建立 Spot VM

您可以通過使用 gcloud Console、gcloud CLI、Compute Engine API 或 Terraform 的方式建立 Spot VM,本文以 Google Cloud 控制台為例:

1. 在 Google Cloud 控制台中,進入「建立執行個體」頁面。

圖二:Google Cloud 控制台首頁
icon/enlarge

2. 展開「網絡、磁碟、安全性、管理、單一用戶群」部分,然後執行以下操作:

圖三:建立執行個體畫面
icon/enlarge

2-1 展開「管理」部分。

圖四:建立執行個體畫面,展開「管理」項目
icon/enlarge

2-2 在「可用性政策」部分,從 VM 佈建模型列表中選擇「Spot」。選擇 Spot 同時代表禁用 VM 的自動重新啟動和主機維護選項,並可選擇 VM 被終止時的操作選項。

圖五:VM 佈建模型下拉選單
icon/enlarge
圖六:選擇標準模型時之選項介面
icon/enlarge
圖七:選擇 Spot 模型時之選項介面
icon/enlarge

2-3 選擇性操作:在「VM 終止時」下拉選單中,選擇當 Compute Engine 中斷 VM 時要執行的操作。            

a. 要在先占期間停止 VM,請選擇「停止」(預設)。

b. 要在先占期間刪除 VM,請選擇「刪除」。

圖八:「在 VM 終止時」下拉選單
icon/enlarge

3. 選擇性操作:指定其他 VM 選項。

4. 要建立和啟動 VM,請點擊「建立」。

圖九:建立執行個體按鈕
icon/enlarge

二、 先占配額(preemptible quota)

與其他 VM 一樣,Spot VM 需要可用的 CPU 額度。如果您正在使用 Spot VM,但尚未申請可先占配額,則 Spot VM 將消耗您的標準配額。因此如果您打算使用 Spot VM,請考慮先為這些資源提前申請先占配額,以免 Spot VM 消耗您的標準額度。

IAM 與管理之配額頁面
icon/enlarge

三、 在Google Kubernetes Engine (GKE) and Autopilot Clusters 上使用 Spot VMs

當您使用 Spot VMs 建立集群或節點池(node pools)時,GKE 會幫您創建底層 Compute Engine Spot VMs,這些 VM 可以被視為一個受管理的實體組 (MIG)。使用 Spot VMs 的節點可以被視為標準的 GKE 節點,但無法保證可用性。當需要運行標準 VMs 所使用的資源時,Compute Engine 會終止這些 Spot VMs,將運算資源轉移到其他地方。本節將向您展示如何在 GKE 集群和節點池中使用 Spot VMs 和 Spot Pods 運行容錯、無狀態或批次的工作負載,以降低成本。

在您開始實作之前,請確認您已經啟用了 Google Kubernetes API。

四、 啟動和停止 Spot VMs

與其他 VM 一樣,Spot VM 在建立後就開始運行。同樣的,如果您的 Spot VM 被停止了,您可以重新啟動 VM 來恢復運行狀態。只要有運算容量,您就可以一直停止和重新啟動被先占的 Spot VM 。

如果 Compute Engine 主動停止了一個或多個受自動縮放管理的實體組 (MIG) 或 Google Kubernetes Engine (GKE) 集群中的 Spot VM,則當資源再次可用時,該組內的VM將自動被重新啟動 。

五、 最佳實踐

以下是 Google Cloud 提供的一些最佳實踐,可幫助您充分利用 Spot VM。

  • 使用實體範本:與逐個建立 Spot VM 不同,您可以使用實體範本建立多個具有相同屬性的 Spot VM。使用 MIG 需要實體範本。另外,您也可以使用批量實體 API 創建多個 Spot VM。
  • 使用 MIG 來區域分佈和自動重建 Spot VM:使用 MIG 使 Spot VM 上的工作負載更具靈活性和彈性。例如,使用區域性 MIG 將 VM 分佈在多個區域中,這有助於減輕資源可用性錯誤。此外,您還可以使用自動修復功能,在 Spot VM 被先占後自動重建 Spot VM。
  • 選擇較小的機器類型:Spot VM 的資源來自於 Google Cloud 的多餘和預備容量。較小的機器類型(例如 vCPUs 和內存較少的機器類型)通常較容易獲得 Spot VM 的容量。您可能會發現,通過選擇較小的自定義機器類型,可以獲得更多的 Spot VM 容量,但較小的預定義機器類型可能更容易獲得容量。例如,與 n2-standard-32 預定義機器類型相比,n2-custom-24-96 自定義機器類型更有可能獲得容量,但是 n2-standard-16 預定義機器類型更有可能獲得容量。請注意,像持久磁碟和網絡等非計算服務目前還不符合 Spot VM 折扣的標準。
  • 在離峰時間運行大型 Spot VM 集群:Google Cloud 數據中心的負載隨地點和一天中的時間而變化,但通常在晚上和週末最低。因此,晚上和週末是運行大型 Spot VM 集群的最佳時間。
  • 設計您的應用程式以容許錯誤和先占:重要的是要準備好在不同時間點上會有先占模式的變化。例如,如果某個區域發生部分故障,可能會有大量的 Spot VM 被先占,以便為需要作為恢復的一部分而移動的標準 VM 騰出空間。在這段短暫的時間內,先占率看起來會與其他任何一天都不同。如果您的應用程序假定先占始終是以小組方式完成的,則您可能無法為此類事件做好準備。您可以通過停止 VM 來測試應用程序在先占事件下的行為。
  • 使用關機腳本:使用關機腳本管理關機和先占通知,這樣可以保存作業的進度,以便可以從中斷處繼續,而不必從頭開始。

結論

總體而言,使用 Spot VM 是一種非常實用和節省成本的方法,可以大幅降低在 GCP 上運行虛擬機器的成本。但需要注意的是,它較適合用於非關鍵性工作負載,並且需要準備好當 VM 中斷時的應對措施。

撰文者:Luke Hsu/對於基礎架構有著極大興趣,並且樂於分享新知的小小工程師

即刻下載

雲端運算成本怎麼省?為您介紹優化雲端花費的利器:Spot VM

訂閱 CloudMile 電子報

所有 CloudMile 最新消息、產品動態、活動資訊和特別優惠,立即掌握。