使用節點自動佈建功能

本頁面說明如何使用 Google Kubernetes Engine 的節點自動佈建功能。

總覽

「節點自動佈建」叢集自動配置器的一項機制,會代表使用者自動管理節點集區清單。如未啟用節點自動佈建功能,叢集自動配置器只會處理來自使用者選擇節點集區組合的新節點。啟用節點自動佈建功能之後,系統就能自動建立及刪除新的節點集區。

事前準備

如要準備這項工作,請執行下列步驟:

  • 確認您已啟用 Google Kubernetes Engine API。
  • 啟用 Google Kubernetes Engine API
  • 確認您已安裝 Cloud SDK
  • 設定預設的專案 ID
    gcloud config set project [PROJECT_ID]
  • 如果您使用區域叢集,請設定預設的運算區域
    gcloud config set compute/zone [COMPUTE_ZONE]
  • 如果您使用地區叢集,請設定預設的運算地區
    gcloud config set compute/region [COMPUTE_REGION]
  • gcloud 更新到最新版本:
    gcloud components update

作業

叢集自動配置器會依每個節點集區來運作。啟用節點自動佈建功能之後,系統會對無法排程的 pod 進行規格檢視,並據此自動擴充自動調度資源功能已啟用的節點集區組合。

節點自動佈建功能會根據下列資訊建立節點集區:

資源限制

如要使用節點自動佈建功能,您必須設定 CPU 和記憶體的上限。您可以視需要設定 GPU 的限制。系統會根據限制檢查叢集中所有節點。根據預設,自動佈建節點集區的上限為 1000 個節點。

如果建立新節點會超出您設定的任一上限,叢集自動配置器就不會執行建立流程。不過,如果已超出上限,系統也不會自動刪除任何節點。

工作負載區隔

如果擱置中的 pod 具有節點相依性和容許條件 (意即具有工作負載區隔),那麼節點自動佈建程式即可佈建具有相符標籤和 taint 的節點。

目前在滿足下列所有條件的情況下,節點自動佈建程式會考慮建立節點具有標籤和 taint 的節點集區:

  • 擱置中的 pod 要求節點標上特定的金鑰和值。
  • pod 的容許條件適用於具有相同金鑰的 taint。
  • 容許條件適用於 NoSchedule 效果、NoExecute 效果或所有效果。

pod 的規格可以透過兩種方式表達節點必須具有特定標籤:

  • 使用 nodeSelector 欄位。
  • 使用具有 In 運算子和單一值的 nodeAffinity 欄位。

下列範例是 pod 規格的摘錄內容,該規格可以解讀為工作負載區隔要求。pod 的容許條件適用於具有標籤、金鑰為 foo 和值為 bar 的節點。本範例使用 nodeAffinity 選取節點:

spec:
  tolerations:
  - key: foo
    operator: Equal
    value: bar
    effect: NoSchedule
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: foo
            operator: In
            values:
            - bar

如果這個 pod 存在,則系統會考量建立 taint 為 key=value:NoSchedule 且標籤為 key=value 的節點。

下列範例使用 nodeSelector 且具有相同效果:

spec:
  tolerations:
  - key: foo
    operator: Equal
    value: bar
    effect: NoSchedule
  nodeSelector:
    foo: bar

刪除自動佈建節點集區

當自動佈建節點集區中沒有任何節點時,GKE 就會刪除該節點集區。未標示為自動佈建的節點集區不會遭到刪除。

支援的機器類型

目前節點自動佈建只考慮使用最多搭載 16 個 vCPU 的機器來建立節點集區。這項限制將在日後放寬。

可擴充性限制

我們目前在具有多達 100 個節點的叢集中測試節點自動配置。我們不建議在較大的叢集上使用該功能。除此之外,叢集自動配置器的擴充性限制也適用。

限制自動佈建節點集區的數量

一個叢集中的自動佈建節點集區不可超過 15 個。如果達到上限,就無法建立新的自動佈建節點集區。

啟用節點自動佈建功能

gcloud

如要啟用節點自動佈建功能,請執行下列指令:

gcloud beta container clusters update [CLUSTER_NAME] --enable-autoprovisioning \
        --max-cpu 10 --max-memory 64

在這個指令中:

  • --enable-autoprovisioning 表示啟用了節點自動佈建功能。
  • --max-cpu 指定叢集中核心的數量上限。
  • --max-memory 指定叢集中記憶體的 GB 數上限。

設定 GPU 限制

gcloud

將節點自動佈建搭配 GPU 一起使用時,建議您設定叢集中各種 GPU 類型的總數限制。如要進行這項操作,請執行下列指令:

gcloud beta container clusters update [CLUSTER_NAME] --enable-autoprovisioning \
        --max-cpu 10 --max-memory 64 --max-accelerator type=nvidia-tesla-k80,count=4

在這個指令中:

  • --enable-autoprovisioning 表示啟用了節點自動佈建功能。
  • --max-cpu 指定叢集中核心的數量上限。
  • --max-memory 指定叢集中記憶體的 GB 數上限。
  • --max-accelerator 指定 nvidia-tesla-k80 GPU 加速器的數量上限。

您也可以從設定檔載入限制:

gcloud beta container clusters update [CLUSTER_NAME] --enable-autoprovisioning \
         --autoprovisioning-config-file [FILE_NAME]

在這個指令中:* --enable-autoprovisioning 代表節點自動佈建功能已啟用。* --autoprovisioning-config-file 指定具有資源限制的檔案。範例設定:

  -resourceType: 'cpu'
   minimum: 4
   maximum: 10
  -resourceType: 'memory'
   maximum: 64
  -resourceType: 'nvidia-tesla-k80'
   maximum: 4
  -resourceType: 'nvidia-tesla-v100'
   maximum: 2

停用節點自動佈建功能

當您停用叢集的節點自動佈建功能時,系統就不會再自動佈建節點集區。

gcloud

如要停用節點自動佈建功能,請執行下列指令:

gcloud beta container clusters update [CLUSTER_NAME] --no-enable-autoprovisioning

在這個指令中:

  • --no-enable-autoprovisioning 代表節點自動佈建功能已停用。

將節點集區標示為自動佈建

您可以將叢集中的任何節點集區標示為自動佈建。但標示之後,當節點集區不再使用時,系統可能會自動予以刪除。

gcloud

如要將節點集區標示為自動佈建,請執行下列指令:

gcloud beta container node-pool update [NODE_POOL_NAME] --enable-autoprovisioning

在這個指令中:

  • --enable-autoprovisioning 代表已將節點集區標示為自動佈建。

將節點集區標示為非自動佈建

您可以將節點集區標示為非自動佈建。

gcloud

如要將節點集區標示為非自動佈建,請執行下列 gcloud 指令:

gcloud beta container node-pool update [NODE_POOL_NAME] --no-enable-autoprovisioning

在這個指令中:

  • --no-enable-autoprovisioning 代表已將節點集區標示為非自動佈建。

相關資源

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

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

這個網頁
Kubernetes Engine 說明文件