自動調度叢集資源

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

  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. 在「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

更改下列內容:

  • 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」(節點集區) 下方,按一下要修改的節點集區名稱,然後按一下「Edit」(編輯)

  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/ 的所有汙點

疑難排解

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

後續步驟