自動調度叢集資源

本頁面說明如何自動調整 Standard Google Kubernetes Engine (GKE) 叢集的規模。如要瞭解叢集自動調度資源的運作方式,請參閱「叢集自動調度資源」。

使用 Autopilot 叢集時,您不必擔心佈建節點或管理節點集區,因為節點集區會透過自動佈建節點自動佈建,並自動調整大小,以滿足工作負載的需求。

使用叢集自動配置器

以下各節說明如何使用叢集自動配置器。

建立啟用自動調度資源功能的叢集

您可以使用 Google Cloud CLI 或 Google Cloud 控制台建立啟用自動調度的叢集。

gcloud

如要建立啟用自動調度資源功能的叢集,請使用 --enable-autoscaling 旗標,並指定 --min-nodes 和 --max-nodes:

gcloud container clusters create CLUSTER_NAME \
    --enable-autoscaling \
    --num-nodes NUM_NODES \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES \
    --location=CONTROL_PLANE_LOCATION

更改下列內容:

  • CLUSTER_NAME:要建立的叢集名稱。
  • NUM_NODES:要在每個位置建立的節點數量。
  • MIN_NODES:每個可用區中,指定節點集區自動調度的節點數量下限。如要在 GKE 1.24 以上版本中,為整個節點集區指定最少節點數,請使用 --total-min-nodes。旗標 --total-min-nodes 和 --total-max-nodes 與旗標 --min-nodes 和 --max-nodes 互斥。
  • MAX_NODES:每個可用區中,指定節點集區可自動調度的節點數量上限。如要在 GKE 1.24 以上版本中,為整個節點集區指定節點數量上限,請使用 --total-max-nodes。--total-min-nodes 和 --total-max-nodes 旗標與 --min-nodes 和 --max-nodes 旗標互斥。
  • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 位置。如果是區域叢集,請提供區域;如果是可用區叢集,請提供可用區。

範例:建立叢集並啟用節點自動調度資源功能,以及設定節點數量下限和上限

下列指令會建立 90 個節點的叢集,或是在區域中 3 個可用區的每個可用區中建立 30 個節點。節點自動調度功能已啟用,並根據叢集負載調整節點數量。叢集自動調度器可將預設節點集區的大小縮減為 15 個節點,或將節點集區擴增為每個區域最多 50 個節點。

gcloud container clusters create my-cluster --enable-autoscaling \
    --num-nodes=30 \
    --min-nodes=15 --max-nodes=50 \
    --location=us-central1

範例:建立叢集並啟用節點自動調度資源功能,以及設定節點總數

下列指令會建立 30 個節點的叢集,也就是區域中 3 個可用區各 10 個節點。節點自動調度功能已啟用,並根據叢集負載調整節點數量。在本例中,無論叢集是否分散在不同可用區,叢集總大小都介於 10 到 60 個節點之間。

gcloud container clusters create my-cluster --enable-autoscaling \
    --num-nodes 10 \
    --location us-central1 \
    --total-min-nodes 10  --total-max-nodes 60

控制台

如要建立新叢集,並為預設節點集區啟用自動調整功能,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Create a Kubernetes cluster」(建立 Kubernetes 叢集) 頁面。

    前往「建立 Kubernetes 叢集」

  2. 視需求設定叢集。

  3. 在導覽窗格的「Node Pools」(節點集區) 下方,按一下「default-pool」。

  4. 勾選「啟用自動調度資源」核取方塊。

  5. 視需要變更「節點數量下限」和「節點數量上限」欄位的值。

  6. 點選「建立」。

新增具有自動調度資源功能的節點集區

您可以使用 gcloud CLI 或 Google Cloud 控制台,建立啟用自動調整規模功能的節點集區。

gcloud

如要將具備自動調度資源功能的節點集區新增至現有叢集,請使用下列指令:

gcloud container node-pools create POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-autoscaling \
    --min-nodes=MIN_NODES \
    --max-nodes=MAX_NODES \
    --location=CONTROL_PLANE_LOCATION

更改下列內容:

  • POOL_NAME:所需節點集區的名稱。
  • CLUSTER_NAME:節點集區建立所在的叢集名稱。
  • MIN_NODES:每個可用區中,指定節點集區自動調度的節點數量下限。如要在 GKE 1.24 以上版本中,為整個節點集區指定最少節點數,請使用 --total-min-nodes。旗標 --total-min-nodes 和 --total-max-nodes 與旗標 --min-nodes 和 --max-nodes 互斥。
  • MAX_NODES:每個可用區中,指定節點集區可自動調度的節點數量上限。如要在 GKE 1.24 以上版本中,為整個節點集區指定節點數量上限,請使用 --total-max-nodes。--total-min-nodes 和 --total-max-nodes 旗標與 --min-nodes 和 --max-nodes 旗標互斥。
  • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 位置。如果是區域叢集,請提供區域;如果是可用區叢集,請提供可用區。

範例:新增已啟用節點自動調度資源的節點集區

下列指令會建立節點自動調度資源功能,將節點集區調度至最多 5 個節點,最少 1 個節點:

gcloud container node-pools create my-node-pool \
    --cluster my-cluster \
    --enable-autoscaling \
    --min-nodes 1 --max-nodes 5 \
    --location us-central1-c

控制台

如要將具備自動調度資源功能的節點集區新增至現有叢集,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。

    前往「Google Kubernetes Engine」

  2. 在叢集清單中,按一下您要修改的叢集名稱。

  3. 按一下「Nodes」(節點) 分頁標籤。

  4. 按一下「建立由使用者管理的節點集區」。

  5. 視需要設定節點集區。

  6. 在「大小」下方,勾選「啟用自動調度資源」核取方塊。

  7. 視需要變更「節點數量下限」和「節點數量上限」欄位的值。

  8. 點選「建立」。

啟用現有節點集區的自動調度資源功能

您可以使用 gcloud CLI 或 Google Cloud 控制台,為現有節點集區啟用自動調度功能。

gcloud

如要為現有節點集區啟用自動調度資源功能,請使用下列指令:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoscaling \
    --node-pool=POOL_NAME \
    --min-nodes=MIN_NODES \
    --max-nodes=MAX_NODES \
    --location=CONTROL_PLANE_LOCATION

更改下列內容:

  • CLUSTER_NAME:要更新的叢集名稱。
  • POOL_NAME:所需節點集區的名稱。如果只有一個節點集區,請提供 default-pool 做為值。
  • MIN_NODES:每個可用區中,指定節點集區自動調度的節點數量下限。如要在 GKE 1.24 以上版本中,為整個節點集區指定最少節點數,請使用 --total-min-nodes。旗標 --total-min-nodes 和 --total-max-nodes 與旗標 --min-nodes 和 --max-nodes 互斥。
  • MAX_NODES:每個可用區中,指定節點集區可自動調度的節點數量上限。如要在 GKE 1.24 以上版本中,為整個節點集區指定節點數量上限,請使用 --total-max-nodes。--total-min-nodes 和 --total-max-nodes 旗標與 --min-nodes 和 --max-nodes 旗標互斥。
  • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 位置。如果是區域叢集,請提供區域;如果是可用區叢集,請提供可用區。

控制台

如要為現有節點集區啟用自動調度資源功能,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。

    前往「Google Kubernetes Engine」

  2. 在叢集清單中,按一下您要修改的叢集名稱。

  3. 按一下「Nodes」(節點) 分頁標籤。

  4. 在「Node Pools」(節點集區) 下方,按一下要修改的節點集區名稱,然後點選 「Edit」(編輯)。

  5. 在「大小」下方,勾選「啟用自動調度資源」核取方塊。

  6. 視需要變更「節點數量下限」和「節點數量上限」欄位的值。

  7. 按一下 [儲存]。

確認現有節點集區已啟用自動調度資源功能

使用 Google Cloud CLI 或 Google Cloud 控制台,確認叢集是否使用自動調度資源功能。

gcloud

說明叢集中的節點集區:

gcloud container node-pools describe NODE_POOL_NAME --cluster=CLUSTER_NAME |grep autoscaling -A 1

更改下列內容:

  • NODE_POOL_NAME:您選擇的新節點集區名稱。
  • CLUSTER_NAME:叢集名稱。

如果已啟用自動調度資源功能,輸出結果會與下列內容相似:

autoscaling:
  enabled: true

控制台

  1. 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。

    前往「Google Kubernetes Engine」

  2. 在叢集清單中,按一下要驗證的叢集名稱。

  3. 按一下「Nodes」(節點) 分頁標籤。

  4. 在「Node Pools」(節點集區) 下方,確認節點集區 Autoscalling 狀態。

建立節點集區,優先最佳化未使用的預留項目

建立節點集區時,您可以使用 --location-policy=ANY 旗標,指示叢集自動調度器優先使用未使用的預留項目:

gcloud container node-pools create POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location-policy=ANY

更改下列內容:

  • POOL_NAME:您選擇的新節點集區名稱。
  • CLUSTER_NAME:叢集名稱。

停用現有節點集區的自動調度資源功能

您可以使用 gcloud CLI 或 Google Cloud 控制台,停用現有節點集區的自動調度功能。

gcloud

如要為特定節點集區停用自動調度資源功能,請使用 --no-enable-autoscaling 旗標:

gcloud container clusters update CLUSTER_NAME \
    --no-enable-autoscaling \
    --node-pool=POOL_NAME \
    --location=CONTROL_PLANE_LOCATION

更改下列內容:

  • CLUSTER_NAME:要更新的叢集名稱。
  • POOL_NAME:所需節點集區的名稱。
  • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 位置。如果是區域叢集,請提供區域;如果是可用區叢集,請提供可用區。

叢集大小會固定為叢集目前的預設節點集區大小,您可以手動更新。

控制台

如要為特定節點集區停用自動調度資源功能,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。

    前往「Google Kubernetes Engine」

  2. 在叢集清單中,按一下您要修改的叢集名稱。

  3. 按一下「Nodes」(節點) 分頁標籤。

  4. 在「Node Pools」(節點集區) 下方,按一下要修改的節點集區名稱,然後點選「編輯」。

  5. 在「大小」下方,取消勾選「啟用自動調度資源」核取方塊。

  6. 按一下 [儲存]。

調整節點集區的大小

如果叢集已啟用自動調度資源功能,叢集自動配置器會根據最小值 (--min-nodes) 和最大值 (--max-nodes) 或最小總大小 (--total-min-nodes) 和最大總大小 (--total-max-nodes) 指定的界限,自動調整節點集區大小。這些旗標互斥。您無法變更這些值來手動調整節點集區大小。

如要手動調整已啟用自動調度資源功能的叢集節點集區大小,請執行下列操作:

  1. 停用節點集區的自動調度資源功能。
  2. 手動調整叢集大小。
  3. 重新啟用自動調度資源功能,並指定節點集區大小的上限與下限。

禁止在所選節點上排定 Pod

視用途而定,您可以使用 startup 或 status taint,防止 Pod 在所選節點上排程。

這項功能適用於 GKE 1.28 以上版本。

啟動汙點

如果節點必須先完成某項作業,才能執行任何 Pod,請使用 startup taint。舉例來說,Pod 應等到節點上的驅動程式安裝完成後再執行。

叢集自動配置器會將標示 startup 汙點的節點視為未就緒,但在向上擴充邏輯中會將其納入考量,假設這些節點很快就會就緒。

啟動汙點定義為前置字元為 startup-taint.cluster-autoscaler.kubernetes.io/ 的所有汙點

狀態汙點

如果 GKE 不應使用特定節點執行 Pod,請使用 status taint。

叢集自動配置器會將標示 status 汙點的節點視為就緒,但在擴充邏輯中會忽略這些節點。即使受汙染的節點已準備就緒,也不應執行任何 Pod。如果 Pod 需要更多資源,GKE 會擴大叢集,並忽略遭汙染的節點。

狀態汙點定義為前置字元為 status-taint.cluster-autoscaler.kubernetes.io/ 的所有汙點

忽略 taint

忽略汙點定義為前置字串為 ignore-taint.cluster-autoscaler.kubernetes.io/ 的所有汙點

疑難排解

如需疑難排解建議,請參閱下列頁面:

後續步驟