自動調度叢集資源


本頁面說明如何自動調度 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-central

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

下列指令會建立 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 控制台中,前往「建立 Kubernetes 叢集」頁面。

    前往「建立 Kubernetes 叢集」

  2. 視需求設定叢集。

  3. 在導覽窗格的「節點集區」下方,按一下「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. 按一下 「Add Node Pool」(新增節點集區)

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

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

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

  7. 點選「建立」

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

您可以使用 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. 在「Size」(大小) 下方,勾選「Enable autoscaling」(啟用自動調度資源) 核取方塊。

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

  7. 按一下 [儲存]

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

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

gcloud

說明叢集中的節點集區:

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

更改下列內容:

  • 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. 在「Size」(大小) 下方,取消勾選「Enable autoscaling」(啟用自動調度資源) 核取方塊。

  6. 按一下 [儲存]

調整節點集區的大小

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

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

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

防止 Pod 在所選節點上執行

視用途而定,您可以使用 startupstatus taint,防止 Pod 排程到所選節點。

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

啟動 taint

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

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

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

狀態汙染

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

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

狀態汙點是指前置字串為 status-taint.cluster-autoscaler.kubernetes.io/ 的所有汙點

忽略 taint

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

疑難排解

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

後續步驟