執行先占 VM

本頁面提供 Google Kubernetes Engine 中先占 VM 支援的總覽。

總覽

先占 VM 是 Google Compute Engine VM 執行個體,生命週期最長可達 24 小時,但不提供可用性保證。 與標準 Compute Engine VM 相比,先占 VM 的價格較為低廉,並提供相同的機器類型和選項。

您可以在 GKE 叢集或節點集區中使用先占 VM 來執行比較不會受到先占 VM 的暫時性和無保證性質影響的批次或容錯工作。

如要進一步瞭解先占 VM,請參閱 Compute Engine 說明文件中的先占 VM

先占 VM 的運作方式

GKE 叢集或節點集區建立 Compute Engine VM 時,VM 的行為類似代管執行個體群組。GKE 中的先占 VM 受到與代管執行個體群組中的先占執行個體相同的限制。先占執行個體會在收到先占通知的 30 秒後終止。

此外,這些先占 VM 會加上 Kubernetes 標籤 cloud.google.com/gke-preemptible=true。 您可以在 nodeSelector 欄位中使用 Kubernetes 標籤,以便將 Pod 排程到特定節點

以下是篩選先占 VM 的選取器範例:

apiVersion: v1
kind: Pod
spec:
  nodeSelector:
    cloud.google.com/gke-preemptible: "true"

最佳做法

由於先佔 VM 不提供可用性保證,因此設計系統時,您應該假設任何或所有 Compute Engine 執行個體都可能會遭到先佔而無法使用。我們也無法保證這些新的執行個體何時可供使用。

此外,我們也無法保證在先占 VM 上執行的 Pod 一律可以正常關閉。

建立具有先占 VM 的叢集或節點集區

您可以使用 gcloud 指令列工具或 GCP Console 來建立具有先占 VM 的叢集或節點集區。

gcloud

您可以指定 --preemptible 標記來建立具有先占 VM 的叢集或節點集區。

如要建立具有先占 VM 的叢集,請執行下列指令:

gcloud beta container clusters create [CLUSTER_NAME] --preemptible

其中 [COMPUTE_ZONE] 是叢集的運算區域

如要建立具有先占 VM 的節點集區:

gcloud beta container node-pools create [POOL_NAME] --preemptible \
--cluster [CLUSTER_NAME]

主控台

  1. 前往 GCP Console 的 Google Kubernetes Engine 選單。

    前往 Google Kubernetes Engine 選單

  2. 按一下 [Create cluster] (建立叢集)。

  3. 選擇 [Standard cluster] (標準叢集) 範本,或者為您的工作負載選擇適當的範本

  4. 視需要設定您的叢集,接著,在要設定的節點集區中按一下 [More options] (更多選項)

  5. 在「Preemptible nodes」(先占節點) 區段中,選取 [Enable preemptible nodes] (啟用先占節點)。

  6. 按一下 [儲存] 以關閉節點集區修改重疊視窗。

  7. 按一下 [Create] (建立)。

使用節點 taint 以避免排程到先占 VM 節點

根據您的用途而定,您可能想避免將重要的 Pod 排程到先占 VM 節點上。在這種情況下,您可以使用節點 taint 和容許條件,來避免將 Pod 排程到具有先佔 VM 的節點上。

為先占 VM 新增節點 taint

若要為具有先占 VM 的節點新增節點 Taint,請執行下列指令:

kubectl taint nodes [NODE_NAME] cloud.google.com/gke-preemptible="true":NoSchedule

現在,只有可容忍節點 Taint 的 Pod 會排程到節點。

新增 Pod 的容許條件

如要為您的 Pod 新增相關容許條件,請將以下內容加到 Pod 規格,或物件的 Pod 範本規格中:

tolerations:
- key: cloud.google.com/gke-preemptible
  operator: Equal
  value: "true"
  effect: NoSchedule

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Kubernetes Engine 說明文件