在 Google Kubernetes Engine (GKE) Standard 叢集中,您可以讓 GKE 自動為待處理的 Pod 建立節點集區,減少手動管理基礎架構的工作量。本文將說明如何為叢集和工作負載啟用節點集區自動建立功能、設定自動建立節點的預設值,以及針對一些常見用途觸發自動建立功能。
這份文件適用於叢集管理員、運算子和開發人員,他們負責管理標準叢集中的基礎架構,並將工作負載部署至標準叢集。如要進一步瞭解節點集區自動建立功能的運作方式,以及不同的啟用方法 (例如 ComputeClass 和叢集層級節點自動佈建),請參閱「關於節點集區自動建立功能」。
限制
節點集區自動建立功能有下列限制:
- 叢集自動調度器的所有限制,也適用於節點集區自動建立功能。
- 如果叢集的節點集區總數超過 200 個,自動調度資源期間的延遲時間可能會增加。任何會觸發建立新節點集區的設定 (例如工作負載分離或使用多個 ComputeClass),都會增加這個數字。如要進一步瞭解叢集限制,請參閱「規劃大型叢集」中的「限制與最佳做法」。
- 啟用節點自動佈建功能時,您為叢集設定的任何資源限制,也會套用至 GKE 為 ComputeClass 建立的節點集區。
- ComputeClasses 不支援下列設定:
- 突波升級或藍綠升級。
- 節點完整性和安全啟動。
- 如要在 GKE 1.33.3-gke.1136000 之前的版本中,為 ComputeClass 啟用節點集區自動建立功能,您也必須啟用叢集層級的自動佈建節點功能。這項限制不適用於 GKE 1.33.3-gke.1136000 以上版本。
事前準備
開始之前,請務必先完成下列工作:
- 啟用 Google Kubernetes Engine API。 啟用 Google Kubernetes Engine API
- 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行
gcloud components update指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文件中的指令。
需求條件
在任何 GKE 版本中,您都可以使用自動佈建節點功能,為整個叢集啟用節點集區自動建立功能。如要使用 ComputeClass 在工作負載層級啟用節點集區自動建立功能,且不想啟用自動佈建節點功能,叢集必須使用 GKE 1.33.3-gke.1136000 以上版本。
如要針對特定節點設定觸發節點集區自動建立功能,您必須符合對應的版本需求。如要進一步瞭解各種設定的版本支援情形,請參閱 GKE 版本資訊 (新功能),或您用途的說明文件。
啟用工作負載層級的自動建立功能
您可以使用 ComputeClass,為叢集中的特定工作負載啟用節點集區自動建立功能。ComputeClass 規格中的 nodePoolAutoCreation 欄位會控管 GKE 是否能為選取該 ComputeClass 的 Pod 建立新的節點集區。在 GKE 1.33.3-gke.1136000 以上版本中,即使叢集未啟用自動佈建節點功能,您也可以為 ComputeClass 啟用節點集區自動建立功能。如果版本低於 1.33.3-gke.1136000,您也必須啟用叢集層級的自動佈建節點功能。
如要為 ComputeClass 啟用節點集區自動建立功能,請按照下列步驟操作:
使用版本 1.33.3-gke.1136000 以上的新 Standard 叢集或現有叢集。
您可以選擇建立新的標準叢集。
如果叢集不符合上一個步驟中的需求,請啟用叢集層級的自動佈建節點功能。
將下列 ComputeClass 範例儲存為 YAML 檔案:
apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 - machineFamily: n2 whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true將
COMPUTE_CLASS替換為新 ComputeClass 的名稱。如要進一步瞭解 ComputeClass 中的可用欄位,請參閱 ComputeClass CustomResourceDefinition。將 ComputeClass 資訊清單套用至叢集:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST將
PATH_TO_COMPUTECLASS_MANIFEST替換為 ComputeClass 資訊清單檔案的路徑。將下列選取 ComputeClass 的 Deployment 範例儲存為
helloweb-deploy.yaml:在叢集中建立 Deployment:
kubectl apply -f helloweb-deploy.yaml如要確認 GKE 是否為 Pod 建立新的節點集區,請取得叢集中的節點集區清單:
gcloud container node-pools list \ --cluster=CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION更改下列內容:
CLUSTER_NAME:叢集名稱。CONTROL_PLANE_LOCATION:叢集控制層的區域或可用區,例如us-central1或us-central1-a。
啟用叢集層級的自動佈建節點功能
如要為整個 GKE 叢集啟用節點集區自動建立功能,請使用自動佈建節點設定。自動佈建節點功能可讓 GKE 根據 Pod 規格或 ComputeClass 中的設定,為叢集中待處理的工作負載建立新的節點集區。您可以為新叢集或現有叢集啟用自動佈建節點功能。
啟用自動佈建節點功能前,請先規劃 VPC 子網路的主要 IPv4 位址範圍大小。GKE 會將這個 IP 位址範圍做為主要節點 IP 位址範圍。視叢集的大小和規模而定,預設節點 IP 位址範圍可能沒有足夠的 IP 位址可指派給新節點。如果在建立叢集後更新節點 IP 位址範圍的大小,您必須更新 GKE 叢集防火牆規則,允許來自新 IP 位址的流量。
如要在 1.33.3-gke.1136000 之前的 GKE 版本中取得自動建立的節點集區,請按照本節中的步驟操作。您也可以在 Google Cloud 控制台中編輯叢集設定,為現有叢集啟用自動佈建節點功能。
如要在建立新叢集時啟用自動佈建節點功能,請選取下列任一選項:
控制台
前往 Google Cloud 控制台的「Create a Kubernetes cluster」(建立 Kubernetes 叢集) 頁面。
在「叢集基本資訊」頁面中,指定新叢集的名稱和位置。
在導覽窗格中,按一下「進階設定」。
在「節點自動佈建」列中,按一下 edit「編輯設定」。
勾選「Enable node auto-provisioning」(啟用自動佈建節點) 核取方塊。系統會顯示「限制」部分。
指定 CPU 和記憶體限制。
按一下 [儲存]。
點選「建立」。
gcloud
gcloud container clusters create CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--min-cpu=MINIMUM_CPU \
--min-memory=MINIMUM_MEMORY \
--max-cpu=MAXIMUM_CPU \
--max-memory=MAXIMUM_MEMORY \
--autoprovisioning-scopes=https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring,https://www.googleapis.com/auth/devstorage.read_only
更改下列內容:
CLUSTER_NAME:要啟用自動佈建節點功能的叢集名稱。CONTROL_PLANE_LOCATION:叢集控制層的區域或可用區,例如us-central1或us-central1-a。MINIMUM_CPU:叢集中的核心數量下限。MINIMUM_MEMORY:叢集的最低記憶體容量 (以 GiB 為單位)。MAXIMUM_CPU:叢集中的核心數量上限。這項限制適用於叢集中所有新節點和現有節點的 CPU 核心總數,包括手動建立的節點集區。MAXIMUM_MEMORY:叢集中的記憶體容量上限,以 GiB 為單位。這項限制適用於叢集中所有新舊節點集區的記憶體容量總和,包括手動建立的節點集區。
使用自動佈建節點設定檔設定
您可以使用 YAML 設定檔,為節點自動佈建功能設定資源限制和節點設定。您可以在設定檔中以宣告方式指定自動建立的節點集區預設值,並執行進階設定,例如啟用節點自動修復功能。這個檔案與 ComputeClass 無關,ComputeClass 是 Kubernetes 自訂資源。設定檔是比使用指令列旗標指定自動佈建節點設定更具擴充性的替代方案。詳情請參閱「使用設定檔設定叢集層級的預設設定」。
如要建立及使用設定檔,請按照下列步驟操作:
- 在文字編輯器中,於 Google Cloud CLI 可存取的路徑中建立 YAML 檔案。
新增要設定或修改的設定,例如以下範例:
resourceLimits: - resourceType: 'cpu' minimum: 4 maximum: 10 - resourceType: 'memory' maximum: 64 - resourceType: 'nvidia-tesla-t4' maximum: 4 management: autoRepair: true autoUpgrade: true shieldedInstanceConfig: enableSecureBoot: true enableIntegrityMonitoring: true這個範例的自動佈建節點設定如下:
resourceLimits:設定叢集中的 CPU、記憶體容量和 NVIDIA T4 GPU 的資源限制。這些限制適用於叢集中的資源容量總和,包括手動建立的節點集區。management:為叢集中所有自動建立的新節點集區啟用節點自動修復和節點自動升級功能。shieldedInstanceConfig:為叢集中所有自動建立的新節點集區啟用安全啟動和節點完整性監控功能。
指定新叢集或現有叢集的
--autoprovisioning-config-file標記和--enable-autoprovisioning標記,將設定檔提供給 GKE:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE更改下列內容:
CLUSTER_NAME:叢集名稱。PATH_TO_CONFIGURATION_FILE:設定檔的路徑。
將設定檔套用至叢集後,GKE 會使用檔案中的設定,為叢集自動建立新的節點集區。這些設定不適用於 GKE 在叢集中建立的現有節點集區。
設定自動佈建節點的資源限制
使用叢集層級的自動佈建節點時,您必須為叢集在所有節點集區中可擁有的資源總量設定限制。如要為叢集啟用自動佈建節點功能,您必須在叢集中指定 CPU 和記憶體容量的限制。此外,如要使用其他類型的附加資源 (例如 GPU 和 TPU),您必須指定這些資源的限制。只有在為叢集啟用自動佈建節點設定時,才需要這些限制。如果您只使用 ComputeClasses 取得自動建立的節點集區,則不需要設定資源限制。
您也可以設定以節點子集為目標的資源限制,例如為 ComputeClass 建立的節點,或使用特定機器系列的節點。詳情請參閱「設定精細的資源限制」。
如要新增或修改節點集區自動建立功能的資源限制,請使用下列任一方法:
- Google Cloud 控制台
- gcloud CLI 旗標
- 叢集層級設定檔
如要為現有叢集設定資源限制,請選取下列任一選項:
控制台
前往 Google Cloud 控制台的「Kubernetes clusters」(Kubernetes 叢集) 頁面。
按一下叢集名稱。「叢集詳細資料」頁面隨即開啟。
點按「Details」(詳細資料) 分頁標籤。
在「Automation」(自動化) 區段中,找到「Node auto-provisioning」(自動佈建節點) 列,然後按一下 「Edit」(編輯)。「編輯自動佈建節點」窗格隨即開啟。
勾選「Enable node auto-provisioning」(啟用自動佈建節點) 核取方塊。
在「限制」部分,指定叢集中 CPU 和記憶體容量的最小值和最大值。
如要為其他資源 (例如 GPU 或 TPU) 設定限制,請按照下列步驟操作:
- 按一下「新增資源」。
- 從「資源類型」下拉式清單中,選取 GPU 型號或 TPU 機型,例如「NVIDIA A100 80GB」或「ct5p」。
- 指定資源的最小值和最大值。
選用:在「節點集區位置」部分,選取 GKE 要在其中建立節點的特定可用區。舉例來說,如果您打算執行 GPU 工作負載,請選取所選 GPU 類型的高可用性區域。
按一下 [儲存變更]。
gcloud
執行下列其中一個指令:
指定 CPU 和記憶體資源限制:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --min-cpu=MINIMUM_CPU \ --min-memory=MINIMUM_MEMORY \ --max-cpu=MAXIMUM_CPU \ --max-memory=MAXIMUM_MEMORY更改下列內容:
MINIMUM_CPU:叢集中的核心數量下限。MINIMUM_MEMORY:叢集的最低記憶體容量 (以 GiB 為單位)。MAXIMUM_CPU:叢集中的核心數量上限。這項限制適用於叢集內所有節點集區的 CPU 核心總和,包括手動建立的節點集區。MAXIMUM_MEMORY:叢集中的記憶體容量上限,以 GiB 為單位。這項限制適用於叢集內所有節點集區的記憶體容量總和,包括手動建立的節點集區。
指定 GPU 資源限制:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --min-cpu=MINIMUM_CPU \ --min-memory=MINIMUM_MEMORY \ --max-cpu=MAXIMUM_CPU \ --max-memory=MAXIMUM_MEMORY \ --min-accelerator=type=GPU_TYPE,count=MINIMUM_GPU_COUNT \ --max-accelerator=type=GPU_TYPE,count=MAXIMUM_GPU_COUNT更改下列內容:
GPU_TYPE:要設定限制的 GPU 類型,例如nvidia-l4。MINIMUM_GPU_COUNT:叢集可擁有的指定類型 GPU 數量下限。MAXIMUM_GPU_COUNT:叢集可擁有的指定類型 GPU 數量上限。
指定 TPU 資源限制:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --min-cpu=MINIMUM_CPU \ --min-memory=MINIMUM_MEMORY \ --max-cpu=MAXIMUM_CPU \ --max-memory=MAXIMUM_MEMORY \ --min-accelerator=type=TPU_TYPE,count=MINIMUM_TPU_COUNT \ --max-accelerator=type=TPU_TYPE,count=MAXIMUM_TPU_COUNT更改下列內容:
TPU_TYPE:要設定限制的 TPU 類型。支援的值如下:tpu-v4-podslice:TPU v4。tpu-v5-lite-podslice:機器類型開頭為ct5lp-的 TPU v5e。tpu-v5p-slice:機器類型開頭為ct5p-的 TPU v5e。tpu-v6e-slice:TPU Trillium。
MINIMUM_TPU_COUNT:叢集可擁有的指定類型 TPU 晶片數量下限。如果您指定的值大於多主機 TPU 配量中的 TPU 晶片數量,TPU 配量可能不會縮減。MAXIMUM_TPU_COUNT:叢集可擁有的指定類型 TPU 晶片數量上限。如果是多主機 TPU 節點,請指定大於每個節點晶片數的值,讓 GKE 能以原子方式調度節點。配量中的晶片數量是 TPU 拓撲的乘積。舉例來說,如果拓撲為2x2x2,則配量中的晶片數量為8,這表示 MAXIMUM_TPU_COUNT 的值必須大於8。
設定檔
在設定檔的
resourceLimits欄位中,指定下列其中一組欄位:指定 CPU 和記憶體資源限制:
resourceLimits: - resourceType: 'cpu' minimum: MINIMUM_CPU maximum: MAXIMUM_CPU - resourceType: 'memory' minimum: MINIMUM_MEMORY maximum: MAXIMUM_MEMORY更改下列內容:
MINIMUM_CPU:叢集中的核心數量下限。MINIMUM_MEMORY:叢集的最低記憶體容量 (以 GiB 為單位)。MAXIMUM_CPU:叢集中的核心數量上限。這項限制適用於叢集內所有節點集區的 CPU 核心總和,包括手動建立的節點集區。MAXIMUM_MEMORY:叢集中的記憶體容量上限,以 GiB 為單位。這項限制適用於叢集內所有節點集區的記憶體容量總和,包括手動建立的節點集區。
指定 GPU 資源限制:
resourceLimits: - resourceType: 'cpu' minimum: MINIMUM_CPU maximum: MAXIMUM_CPU - resourceType: 'memory' minimum: MINIMUM_MEMORY maximum: MAXIMUM_MEMORY - resourceType: 'GPU1_TYPE' minimum: MINIMUM_GPU1_COUNT maximum: MAXIMUM_GPU1_COUNT - resourceType: 'GPU2_TYPE' minimum: MINIMUM_GPU2_COUNT maximum: MAXIMUM_GPU2_COUNT更改下列內容:
GPU1_TYPE、GPU2_TYPE:要設定上限的 GPU 類型,例如nvidia-l4。MINIMUM_GPU1_COUNT、MINIMUM_GPU2_COUNT: 叢集可擁有的指定類型 GPU 數量下限。MAXIMUM_GPU1_COUNT、MAXIMUM_GPU2_COUNT:叢集可擁有的指定類型 GPU 數量上限。
指定 TPU 資源限制:
resourceLimits: - resourceType: 'cpu' minimum: MINIMUM_CPU maximum: MAXIMUM_CPU - resourceType: 'memory' minimum: MINIMUM_MEMORY maximum: MAXIMUM_MEMORY - resourceType: 'TPU1_TYPE' minimum: MINIMUM_TPU1_COUNT maximum: MAXIMUM_TPU1_COUNT - resourceType: 'TPU2_TYPE' minimum: MINIMUM_TPU2_COUNT maximum: MAXIMUM_TPU2_COUNT更改下列內容:
TPU1_TYPE、TPU2_TYPE:要設定限制的 TPU 類型。支援的值如下:tpu-v4-podslice:TPU v4。tpu-v5-lite-podslice:機器類型開頭為ct5lp-的 TPU v5e。tpu-v5p-slice:機器類型開頭為ct5p-的 TPU v5e。tpu-v6e-slice:TPU Trillium。
MINIMUM_TPU1_COUNT、MINIMUM_TPU2_COUNT:叢集可擁有的指定類型 TPU 晶片數量下限。如果您指定的值大於多主機 TPU 配量中的 TPU 晶片數量,TPU 配量可能不會縮減。MAXIMUM_TPU1_COUNT、MAXIMUM_TPU2_COUNT:叢集可擁有的指定類型 TPU 晶片數量上限。如果是多主機 TPU 配量,請指定大於每個配量中晶片數的值,讓 GKE 可以原子方式擴充配量。一個 Slice 中的晶片數量是 TPU 拓撲的乘積。舉例來說,如果TPU1_TYPE的拓撲是2x2x2,則切片中的晶片數量為8,這表示MAXIMUM_TPU1_COUNT的值必須大於8。
指定新叢集或現有叢集的
--autoprovisioning-config-file標記和--enable-autoprovisioning標記,將設定檔提供給 GKE:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE更改下列內容:
CLUSTER_NAME:叢集名稱。PATH_TO_CONFIGURATION_FILE:設定檔的路徑。
將現有節點集區標示為自動建立
啟用叢集層級的自動佈建節點功能後,您可以將叢集中的任何現有節點集區標示為自動建立。GKE 會管理這些節點集區的擴縮作業,包括在節點集區為空時刪除節點集區。您可以將手動建立的節點集區標示為自動建立,讓 GKE 為您管理節點集區。
如果停用叢集的自動佈建功能,GKE 會停止管理叢集中所有現有的自動建立節點集區。如果之後重新啟用叢集的自動佈建功能,GKE 不會自動恢復管理這些現有節點集區。您必須將現有節點集區標示為自動建立。
如要將現有節點集區標示為自動建立,請執行下列指令:
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning
將 NODE_POOL_NAME 替換為節點集區名稱。
設定自動建立節點集區的預設設定
GKE 會根據您的 ComputeClass 和 Pod 規格,判斷哪些類型的節點最適合執行待處理的 Pod。您可以選擇性設定 GKE 套用至自動建立節點集區的預設設定,例如節點的自訂 Identity and Access Management (IAM) 服務帳戶,或自訂開機磁碟設定。這些預設設定會覆寫 Google 為叢集設定的任何對應預設值。舉例來說,您可以將 Ubuntu 節點映像檔設為自動建立節點集區的預設映像檔,藉此覆寫 GKE 預設的 Container-Optimized OS 節點映像檔。
您可以使用節點自動佈建功能,在叢集層級設定預設設定,或在 ComputeClasses 中設定工作負載層級的預設設定。在上述任一層級設定前,請先考量下列事項:
- 叢集層級設定會套用至叢集中自動建立的任何節點集區,而 ComputeClass 設定只會套用至使用該 ComputeClass 的工作負載。
- 如果您在 ComputeClass 和叢集層級指定相同的預設設定,GKE 會針對使用 ComputeClass 的工作負載,採用 ComputeClass 設定。
- 您設定的預設值只會套用至新自動建立的節點集區。現有節點集區不受影響。
以下各節說明如何設定特定預設設定。
設定預設節點圖片
選取下列選項之一:
ComputeClass
在 ComputeClass 資訊清單中,使用
nodePoolConfig.imageType欄位。這個欄位適用於 GKE 1.32.4-gke.1198000 以上版本。apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 - machineFamily: n4d nodePoolConfig: imageType: IMAGE_TYPE whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true將
IMAGE_TYPE替換為節點映像檔的值,可以是下列其中一個值:cos_containerd:採用 containerd 的 Container-Optimized OS。ubuntu_containerd:採用 containerd 的 Ubuntu。
將 ComputeClass 資訊清單套用至叢集:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST將
PATH_TO_COMPUTECLASS_MANIFEST替換為 ComputeClass 資訊清單檔案的路徑。
gcloud
如要在指令列設定預設節點映像檔,請使用 --autoprovisioning-image-type 旗標:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--autoprovisioning-image-type=IMAGE_TYPE
更改下列內容:
CLUSTER_NAME:叢集名稱。IMAGE_TYPE:節點圖片,可以是下列任一值:cos_containerd:採用 containerd 的 Container-Optimized OS。ubuntu_containerd:採用 containerd 的 Ubuntu。
如要在設定檔中設定預設節點映像檔,請按照下列步驟操作:
在設定檔中,指定
imageType欄位:imageType: 'IMAGE_TYPE'如果設定檔包含其他設定,請勿修改這些設定。設定檔中的任何修改或移除作業,也會修改對應的叢集層級設定。
指定新叢集或現有叢集的
--autoprovisioning-config-file標記和--enable-autoprovisioning標記,將設定檔提供給 GKE:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE更改下列內容:
CLUSTER_NAME:叢集名稱。PATH_TO_CONFIGURATION_FILE:設定檔的路徑。
設定節點的預設 IAM 服務帳戶
GKE 節點會使用 IAM 服務帳戶執行記錄和監控等系統工作,如要變更自動建立的節點集區的 IAM 服務帳戶,請選取下列其中一個選項:
ComputeClass
在 Computeclass 資訊清單中,使用
nodePoolConfig.serviceAccount欄位。這個欄位適用於 GKE 1.31.4-gke.1072000 以上版本。apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 - machineFamily: n4d nodePoolConfig: serviceAccount: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true更改下列內容:
SERVICE_ACCOUNT_NAME:IAM 服務帳戶的名稱,例如my-node-account。PROJECT_ID:服務帳戶專案的專案 ID。
將 ComputeClass 資訊清單套用至叢集:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST將
PATH_TO_COMPUTECLASS_MANIFEST替換為 ComputeClass 資訊清單檔案的路徑。
gcloud
使用 gcloud CLI 為自動建立的節點集區設定預設服務帳戶時,您也必須指定節點集區正常運作所需的存取範圍。
如要在指令列上設定預設服務帳戶和存取範圍,請使用 --autoprovisioning-service-account 和 --autoprovisioning-scopes 旗標:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--autoprovisioning-service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
--autoprovisioning-scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/trace.append
更改下列內容:
SERVICE_ACCOUNT_NAME:IAM 服務帳戶的名稱,例如my-node-account。PROJECT_ID:服務帳戶專案的專案 ID。
如要在設定檔中設定預設服務帳戶和存取範圍,請按照下列步驟操作:
在設定檔中,指定
serviceAccount和scopes欄位:serviceAccount: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com scopes: https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/trace.append如果設定檔包含其他設定,請勿修改這些設定。設定檔中的任何修改或移除作業,也會修改對應的叢集層級設定。
指定新叢集或現有叢集的
--autoprovisioning-config-file標記和--enable-autoprovisioning標記,將設定檔提供給 GKE:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE更改下列內容:
CLUSTER_NAME:叢集名稱。PATH_TO_CONFIGURATION_FILE:設定檔的路徑。
設定自動建立節點的預設可用區
根據預設,GKE 會在下列可用區中自動建立節點,具體取決於叢集類型:
- 區域叢集:GKE 會在叢集區域中隨機選取三個可用區,並在這些可用區中建立節點。
- 區域叢集:GKE 會在與叢集控制層相同的區域中建立節點。
您可以手動指定 GKE 自動建立節點的可用區清單。這些可用區必須與叢集控制層位於相同區域。舉例來說,如果您有一個可用區叢集,控制層位於 us-central1-a,則可以指定 us-central1 區域中的任何可用區,讓 GKE 自動建立節點。如果您修改現有叢集中自動建立節點的預設可用區,變更只會套用至 GKE 建立的新節點集區。
如要指定自動建立節點的預設可用區,請選取下列任一選項:
ComputeClass
在 ComputeClass 資訊清單中,使用
spec.priorityDefaults.location.zones欄位。這個欄位適用於 GKE 1.33.1-gke.1545000 以上版本。apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorityDefaults: location: zones: ['ZONE1','ZONE2','...'] priorities: - machineFamily: n4 - machineFamily: n4d whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true將
ZONE1,ZONE2,...替換為以半形逗號分隔的自動建立節點預設區域清單,例如us-central1-a','us-central1-b', 'us-central1-f'。如果spec.priorities欄位中的特定規則未明確列出區域,GKE 就會使用這些區域。選用:如果您要佈建 TPU VM,請使用 AI 區域,例如
us-central1-ai1a。AI 可用區是專門的地點,經過最佳化調整,可處理 Google Cloud 區域內的 AI/機器學習工作負載。將 ComputeClass 資訊清單套用至叢集:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST將
PATH_TO_COMPUTECLASS_MANIFEST替換為 ComputeClass 資訊清單檔案的路徑。
gcloud
如要在指令列上設定節點集區自動建立功能的預設可用區,請使用 --autoprovisioning-locations 旗標:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--autoprovisioning-locations=ZONE1,ZONE2,...
將 ZONE1,ZONE2,... 替換為以半形逗號分隔的自動建立節點預設可用區清單,例如「us-central1-a','us-central1-b', 'us-central1-f'」。
如要使用設定檔設定節點集區自動建立功能的預設區域,請按照下列步驟操作:
在設定檔中指定
autoprovisioningLocations欄位:autoprovisioningLocations: - ZONE1 - ZONE2將
ZONE1、ZONE2替換為自動建立節點的預設可用區,例如「us-central1-a」和「us-central1-b」。如果設定檔包含其他設定,請勿修改這些設定。設定檔中的任何修改或移除作業,也會修改對應的叢集層級設定。
指定新叢集或現有叢集的
--autoprovisioning-config-file標記和--enable-autoprovisioning標記,將設定檔提供給 GKE:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE更改下列內容:
CLUSTER_NAME:叢集名稱。PATH_TO_CONFIGURATION_FILE:設定檔的路徑。
設定開機磁碟加密的客戶自行管理加密金鑰
您可以在 Cloud Key Management Service 中指定客戶自行管理的加密金鑰 (CMEK),供 GKE 用於加密自動建立節點集區中節點的開機磁碟。您必須先建立金鑰,才能搭配節點集區自動建立功能使用。如要為節點開機磁碟設定 CMEK,請選取下列任一選項:
ComputeClass
在 ComputeClass 中,您必須在 ComputeClass 的 spec.priorities 欄位中,指定每個優先順序規則的鍵。
在 ComputeClass 資訊清單中,使用
priorities.storage.bootDiskKMSKey欄位:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 storage: bootDiskKMSKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME - machineFamily: n4d storage: bootDiskKMSKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true更改下列內容:
KEY_PROJECT_ID:擁有金鑰的專案 ID。KEY_LOCATION:金鑰環的位置。KEY_RING:金鑰所屬金鑰環的名稱。KEY_NAME:金鑰名稱。
將 ComputeClass 資訊清單套用至叢集:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST將
PATH_TO_COMPUTECLASS_MANIFEST替換為 ComputeClass 資訊清單檔案的路徑。
gcloud
在設定檔中指定
bootDiskKmsKey欄位:bootDiskKmsKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME更改下列內容:
KEY_PROJECT_ID:擁有金鑰的專案 ID。KEY_LOCATION:金鑰環的位置。KEY_RING:金鑰所屬金鑰環的名稱。KEY_NAME:金鑰名稱。
如果設定檔包含其他設定,請勿修改這些設定。設定檔中的任何修改或移除作業,也會修改對應的叢集層級設定。
指定新叢集或現有叢集的
--autoprovisioning-config-file標記和--enable-autoprovisioning標記,將設定檔提供給 GKE:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE更改下列內容:
CLUSTER_NAME:叢集名稱。PATH_TO_CONFIGURATION_FILE:設定檔的路徑。
設定節點完整性和安全啟動
您只能使用自動佈建節點設定檔,為自動建立的節點集區啟用安全啟動和完整性監控。
在設定檔中指定
shieldedInstanceConfig欄位:shieldedInstanceConfig: enableSecureBoot: true enableIntegrityMonitoring: true如果設定檔包含其他設定,請勿修改這些設定。設定檔中的任何修改或移除作業,也會修改對應的叢集層級設定。
指定新叢集或現有叢集的
--autoprovisioning-config-file標記和--enable-autoprovisioning標記,將設定檔提供給 GKE:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE更改下列內容:
CLUSTER_NAME:叢集名稱。PATH_TO_CONFIGURATION_FILE:設定檔的路徑。
設定節點自動修復和自動升級功能
您可以修改自動建立的節點集區中節點自動修復和節點自動升級的設定。所有 GKE 叢集和節點集區預設都會啟用這些功能。建議您啟用這些功能,提升叢集的穩定性和可靠性。
如要變更節點自動修復和節點自動升級設定,請選取下列其中一個選項:
ComputeClass
在 ComputeClass 資訊清單中,使用
autoRepair欄位和spec.nodePoolConfig欄位中的autoUpgrade欄位。這些欄位適用於 GKE 1.34.0-gke.2201000 以上版本。apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: nodePoolConfig: autoRepair: true autoUpgrade: true priorities: - machineFamily: n4 - machineFamily: n4d whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true將 ComputeClass 資訊清單套用至叢集:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST將
PATH_TO_COMPUTECLASS_MANIFEST替換為 ComputeClass 資訊清單檔案的路徑。
gcloud
如要在指令列啟用自動修復和自動升級設定,請使用
--enable-autoprovisioning-autorepair和--enable-autoprovisioning-autoupgrade旗標:gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --enable-autoprovisioning-autorepair \ --enable-autoprovisioning-autoupgrade如要透過指令列停用自動修復和自動升級設定,請使用
--no-enable-autoprovisioning-autorepair和--no-enable-autoprovisioning-autoupgrade旗標:gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --no-enable-autoprovisioning-autorepair \ --no-enable-autoprovisioning-autoupgrade如要使用設定檔修改節點自動修復和自動升級設定,請按照下列步驟操作:
在設定檔中指定
management.autoRepair和management.autoUpgrade欄位:management: autoRepair: true autoUpgrade: true如果設定檔包含其他設定,請勿修改這些設定。設定檔中的任何修改或移除作業,也會修改對應的叢集層級設定。
指定新叢集或現有叢集的
--autoprovisioning-config-file標記和--enable-autoprovisioning標記,將設定檔提供給 GKE:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE更改下列內容:
CLUSTER_NAME:叢集名稱。PATH_TO_CONFIGURATION_FILE:設定檔的路徑。
設定節點數擴充升級設定
您可以在自動建立的節點集區中指定節點數擴充升級設定。節點數擴充升級是預設的 GKE 節點升級策略。如要變更節點數擴充升級設定,您必須設定叢集層級的自動佈建節點功能。
如要在指令列中指定節點數擴充升級設定,請使用
--autoprovisioning-max-surge-upgrade和--autoprovisioning-max-unavailable-upgrade旗標:gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-max-surge-upgrade=MAX_SURGE \ --autoprovisioning-max-unavailable-upgrade=MAX_UNAVAILABLE更改下列內容:
MAX_SURGE:升級期間可新增至節點集區的節點數量上限。MAX_UNAVAILABLE:升級期間可同時無法使用的節點集區節點數量上限。
如要使用設定檔指定節點數擴充升級設定,請按照下列步驟操作:
在設定檔中指定
upgradeSettings.maxSurgeUpgrade和upgradeSettings.maxUnavailableUpgrade欄位:upgradeSettings: maxSurgeUpgrade: MAX_SURGE maxUnavailableUpgrade: MAX_UNAVAILABLE如果設定檔包含其他設定,請勿修改這些設定。設定檔中的任何修改或移除作業,也會修改對應的叢集層級設定。
指定新叢集或現有叢集的
--autoprovisioning-config-file標記和--enable-autoprovisioning標記,將設定檔提供給 GKE:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE更改下列內容:
CLUSTER_NAME:叢集名稱。PATH_TO_CONFIGURATION_FILE:設定檔的路徑。
只有在叢集使用節點數擴充升級功能升級自動建立的節點集區時,您指定的節點數擴充升級設定才會套用。如要將新自動建立的節點集區節點升級策略切換為突增升級,請執行下列指令:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--enable-autoprovisioning-surge-upgrade
切換升級策略時,GKE 會使用您先前為該升級策略設定的任何設定。
為自動建立的新節點集區啟用藍綠升級功能
您可以將節點升級策略切換為藍綠升級,適用於所有自動建立的新節點集區,並調整藍綠升級的預設設定。如要變更升級策略,您必須設定叢集層級的自動佈建節點功能。您所做的任何變更只會套用至新自動建立的節點集區。您也可以更新現有自動建立的節點集區,改用藍綠升級。 您無法搭配自動建立的節點集區,使用自動調度藍綠升級 (預先發布版)。
如要使用藍綠升級功能,並為新自動建立的節點集區套用 GKE 預設設定,請執行下列指令:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION --enable-autoprovisioning \ --enable-autoprovisioning-blue-green-upgrade如要使用藍綠升級功能,並為自動建立的新節點集區設定預設設定,請執行下列指令:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --enable-autoprovisioning-blue-green-upgrade \ --autoprovisioning-node-pool-soak-duration=NODE_POOL_SOAK_DURATION \ --autoprovisioning-standard-rollout-policy=batch-node-count=BATCH_NODE_COUNT,batch-soak-duration=BATCH_SOAK_DURATION更改下列內容:
NODE_POOL_SOAK_DURATION:GKE 在清空藍色集區中的所有節點批次後,等待刪除藍色集區的時間長度 (以秒為單位)。預設值為3600。BATCH_NODE_COUNT:藍色集區排除階段中,要在批次作業中排除的節點數量。預設值為1。如果指定0值,GKE 會略過藍色集區排空階段。BATCH_SOAK_DURATION:GKE 在前一個排空作業完成後,等待開始批次排空作業的時間長度 (以秒為單位)。預設值為0。
設定自訂節點開機磁碟
如要指定 GKE 附加至自動建立節點集區中每個節點 VM 的開機磁碟類型和大小,請選取下列其中一個選項:
ComputeClass
在 ComputeClass 的
spec.priorities.storage欄位中使用bootDiskType和bootDiskSize欄位:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineType: n4-standard-16 storage: bootDiskType: BOOT_DISK_TYPE bootDiskSize: BOOT_DISK_SIZE - machineType: n4d-standard-16 storage: bootDiskType: BOOT_DISK_TYPE bootDiskSize: BOOT_DISK_SIZE whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true更改下列內容:
BOOT_DISK_TYPE:要用做節點開機磁碟的磁碟類型。您指定的值必須是 Compute Engine 機型支援的值,而 GKE 會將該機型用於優先順序規則。這個值必須是下列其中一個:pd-balanced:平衡型永久磁碟。pd-standard:標準永久磁碟。pd-ssd:效能型 (SSD) 永久磁碟。hyperdisk-balanced:Google Cloud Hyperdisk Balanced。
BOOT_DISK_SIZE:節點開機磁碟的大小 (以 GiB 為單位)。最小值為10。
將 ComputeClass 資訊清單套用至叢集:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST將
PATH_TO_COMPUTECLASS_MANIFEST替換為 ComputeClass 資訊清單檔案的路徑。
gcloud
在設定檔中,指定
diskSizeGb和diskType欄位:diskSizeGb: BOOT_DISK_SIZE diskType: BOOT_DISK_TYPE更改下列內容:
BOOT_DISK_TYPE:要用做節點開機磁碟的磁碟類型。您指定的值必須是 Compute Engine 機型支援的值,而 GKE 會將該機型用於優先順序規則。這個值必須是下列其中一個:pd-balanced:平衡型永久磁碟。pd-standard:標準永久磁碟。pd-ssd:效能型 (SSD) 永久磁碟。hyperdisk-balanced:Google Cloud Hyperdisk Balanced。
BOOT_DISK_SIZE:節點開機磁碟的大小 (以 GiB 為單位)。最小值為10。
如果設定檔包含其他設定,請勿修改這些設定。設定檔中的任何修改或移除作業,也會修改對應的叢集層級設定。
指定新叢集或現有叢集的
--autoprovisioning-config-file標記和--enable-autoprovisioning標記,將設定檔提供給 GKE:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE更改下列內容:
CLUSTER_NAME:叢集名稱。PATH_TO_CONFIGURATION_FILE:設定檔的路徑。
GKE 會保留部分節點開機磁碟,用於系統功能和暫時性儲存空間。詳情請參閱「由節點開機磁碟支援的暫時儲存空間」。
為常見情境設定自動建立的節點集區
以下各節說明如何針對特定常見 GKE 用途要求自動建立節點集區。如要進一步瞭解其他用途和支援的設定,請參閱特定用途的說明文件。
選取機器系列或機型
如要選取支援的 Compute Engine 機器系列或機型,請選取下列任一選項:
ComputeClass
在 ComputeClass 資訊清單中,於
spec.priorities欄位指定下列任一欄位。您可以在同一個 ComputeClass 資訊清單中指定這兩個欄位,但不能在同一個優先順序規則中指定。如要選取機器系列,請在優先順序規則中指定
machineFamily欄位:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: MACHINE_SERIES whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true將
MACHINE_SERIES替換為 Compute Engine 機器系列,例如n4。如要選取機型,請在優先順序規則中指定
machineType欄位:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineType: MACHINE_TYPE whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true將
MACHINE_TYPE替換為 Compute Engine 機型,例如c4-standard-96。在 GKE 1.33.2-gke.1111000 以上版本中,您也可以在這個欄位中指定自訂機型。
您無法在相同優先順序規則中指定
machineFamily欄位和machineType欄位。將 ComputeClass 資訊清單套用至叢集:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST將
PATH_TO_COMPUTECLASS_MANIFEST替換為 ComputeClass 資訊清單檔案的路徑。
Pod 規格
在 Pod 資訊清單中,選取下列其中一個節點標籤:
如要選取機器系列,請使用
cloud.google.com/machine-family節點標籤:apiVersion: v1 kind: Pod metadata: name: machine-series-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0將
MACHINE_SERIES替換為 Compute Engine 機器系列,例如n4。如要選取預先定義機型,請使用
cloud.google.com/machine-family和node.kubernetes.io/instance-type節點標籤:apiVersion: v1 kind: Pod metadata: name: machine-series-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES node.kubernetes.io/instance-type: MACHINE_TYPE containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0將
MACHINE_TYPE替換為指定機器系列中的 Compute Engine 機型。舉例來說,如果您為MACHINE_SERIES指定n4,可以為MACHINE_TYPE指定n4-standard-80。在 GKE 1.33.2-gke.1111000 版中,您也可以在這個欄位中指定自訂機器類型。
建立 Pod:
kubectl apply -f PATH_TO_POD_MANIFEST將
PATH_TO_POD_MANIFEST替換為 Pod 資訊清單的路徑。
選取 GPU
如要為自動建立的節點集區要求 GPU,請選取下列其中一個選項:
ComputeClass
在 ComputeClass 資訊清單中,指定
spec.priorities.gpu欄位:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - gpu: type: GPU_TYPE count: GPU_COUNT driverVersion: DRIVER_VERSION whenUnsatisfiable: DoNotScaleUp nodePoolAutoCreation: enabled: true更改下列內容:
GPU_TYPE:要附加的 GPU 類型,例如nvidia-l4。GPU_COUNT:要附加至每個節點的 GPU 數量。這個值不得小於1。DRIVER_VERSION:要安裝的 GPU 驅動程式版本。這個值必須是default或latest。這個欄位需要 GKE 1.31.1-gke.1858000 以上版本。
將 ComputeClass 資訊清單套用至叢集:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST將
PATH_TO_COMPUTECLASS_MANIFEST替換為 ComputeClass 資訊清單檔案的路徑。在 GPU 工作負載中選取 ComputeClass,如下列範例所示:
apiVersion: v1 kind: Pod metadata: name: my-gpu-pod spec: nodeSelector: cloud.google.com/compute-class: nvidia-l4-class containers: - name: my-gpu-container image: nvidia/cuda:11.0.3-runtime-ubuntu20.04 command: ["/bin/bash", "-c", "--"] args: ["while true; do sleep 600; done;"] resources: limits: nvidia.com/gpu: 1
Pod 規格
如要在 Pod 規格中選取 GPU,您必須設定叢集層級節點自動佈建,並為該 GPU 類型設定資源限制。如要設定 GPU 資源限制,並在 Pod 中選取 GPU,請按照下列步驟操作:
- 如要使用 GPU,請按照「設定節點集區自動建立的資源限制」一節的說明,設定叢集層級的資源限制。
在 Pod 規格中使用節點標籤選取 GPU:
apiVersion: v1 kind: Pod metadata: name: my-gpu-pod spec: nodeSelector: cloud.google.com/gke-accelerator: GPU_TYPE cloud.google.com/gke-accelerator-count: GPU_COUNT cloud.google.com/gke-gpu-driver-version: DRIVER_VERSION containers: - name: my-gpu-container image: nvidia/cuda:11.0.3-runtime-ubuntu20.04 command: ["/bin/bash", "-c", "--"] args: ["while true; do sleep 600; done;"] resources: limits: nvidia.com/gpu: GPU_QUANTITY更改下列內容:
GPU_TYPE:要附加的 GPU 類型,例如nvidia-l4。GPU_COUNT:要附加至每個節點的 GPU 數量。這個值不得小於1。DRIVER_VERSION:要安裝的 GPU 驅動程式版本。這個值必須是default或latest。在 GKE 1.32.2-gke.1297000 以上版本中,GKE 會自動安裝default驅動程式版本。如要使用這個節點標籤,必須使用 GKE 1.29.2-gke.1108000 以上版本。詳情請參閱「使用自動佈建節點功能搭配 GPU 安裝驅動程式」。GPU_QUANTITY:要附加至 Pod 的 GPU 數量。這個值必須小於或等於GPU_COUNT的值。
選取 TPU
您可以在 ComputeClass 或 Pod 規格中要求 TPU。 本節假設您已熟悉 Cloud TPU 選項,並瞭解要使用的 TPU 類型、拓撲和數量。您採取的步驟取決於選取 TPU 的方式:
- ComputeClasses:請參閱「 使用自訂運算類別佈建 TPU」。
- Pod 規格:
- 如要使用 TPU,請設定叢集層級的資源限制,詳情請參閱「設定節點集區自動建立的資源限制」一節。
- 在 Pod 規格中設定選取器和資源要求,如「在 TPU 節點上執行工作負載」一文所述。
限制自動建立節點的執行時間
您可以指定最長時長,之後 GKE 會終止自動建立的節點。這項時間限制適用於 Compute Engine 限制。
選取下列選項之一:
ComputeClass
在 ComputeClass 資訊清單中,使用
spec.priorities.maxRunDurationSeconds欄位。這個欄位適用於 GKE 1.32.1-gke.1159000 以上版本。apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machine-family: n4 maxRunDurationSeconds: MAX_RUN_DURATION whenUnsatisfiable: DoNotScaleUp nodePoolAutoCreation: enabled: true將
MAX_RUN_DURATION替換為時間 (以秒為單位),自動建立的節點可在 GKE 終止節點前執行。將 ComputeClass 資訊清單套用至叢集:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST將
PATH_TO_COMPUTECLASS_MANIFEST替換為 ComputeClass 資訊清單檔案的路徑。
Pod 規格
在 Pod 資訊清單中,使用節點選取器取得
cloud.google.com/gke-max-run-duration-seconds節點標籤。這個節點標籤適用於 GKE 1.31.2-gke.1518000 以上版本。apiVersion: v1 kind: Pod metadata: name: machine-series-pod spec: nodeSelector: cloud.google.com/machine-family: n4 cloud.google.com/gke-max-run-duration-seconds: MAX_RUN_DURATION containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0將
MAX_RUN_DURATION替換為時間 (以秒為單位),自動建立的節點可在 GKE 終止節點前執行。建立 Pod:
kubectl apply -f PATH_TO_POD_MANIFEST將
PATH_TO_POD_MANIFEST替換為 Pod 資訊清單的路徑。
指定最低 CPU 平台
自動佈建節點功能支援建立指定最低 CPU 平台的節點集區。您可以在工作負載層級 (建議) 或叢集層級指定最低 CPU 平台。
停用節點集區自動建立功能
以下各節說明如何為特定節點集區或整個叢集停用節點集區自動建立功能。您也可以在 ComputeClass 的 nodePoolAutoCreation.enabled 欄位中指定 false 值,藉此在 ComputeClass 中停用節點集區自動建立功能。不過,我們不建議停用 ComputeClass 的自動建立功能,因為自動建立是 ComputeClass 的主要優點,可讓您使用主動遷移和備用優先順序等功能。
為特定節點集區停用自動建立功能
您可以停止讓 GKE 管理現有自動建立的節點集區中的節點。這項操作會產生下列影響:
- 叢集自動調度器會停止在該節點集區中建立或刪除節點。如要讓 GKE 自動調度節點,可以為該節點集區啟用叢集自動配置器。
- 節點數量為零時,GKE 不會刪除節點集區。
- GKE 會繼續將待處理的 Pod 放置在該節點集區中可用的現有節點上。如果叢集仍啟用自動佈建節點功能,GKE 也能視需要為待處理的 Pod 建立新節點集區。
如要為特定節點集區停用自動建立功能,請執行下列指令:
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--no-enable-autoprovisioning
停用叢集的自動佈建節點功能
如要為整個叢集停用節點集區自動建立功能,請停用自動佈建節點叢集設定。這項操作會產生下列影響:
- 叢集自動配置器會停止在現有的自動建立節點集區中建立及刪除節點。使用叢集自動調整程式手動建立的節點集區不會受到影響。
- GKE 不會自動為待處理的工作負載建立新的節點集區。監控叢集,避免 Pod 卡住。
如果叢集符合下列條件,GKE 會繼續為啟用自動建立功能的 ComputeClass 建立新的節點集區:
- 使用 GKE 1.33.3-gke.1136000 以上版本。
如果叢集不符合這些需求,GKE 就不會為啟用自動建立功能的 ComputeClass 建立新的節點集區。
如果您稍後重新啟用叢集層級的自動佈建節點設定,GKE 不會重新啟用現有節點集區的節點集區自動建立功能。您必須將個別節點集區標示為自動建立。
如要停用叢集層級的自動佈建節點設定,請選取下列其中一個選項:
控制台
前往 Google Cloud 控制台的「Kubernetes clusters」(Kubernetes 叢集) 頁面:
按一下要修改的叢集名稱。「叢集詳細資料」頁面隨即開啟。
點按「Details」(詳細資料) 分頁標籤。
在「Automation」(自動化) 區段中,找到「Node auto-provisioning」(自動佈建節點) 列,然後按一下「Edit」(編輯)。系統會顯示「編輯自動佈建節點」窗格。
取消勾選「Enable node auto-provisioning」(啟用自動佈建節點功能) 核取方塊。
按一下 [儲存變更]。
gcloud
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--no-enable-autoprovisioning