設定節點升級策略

平台管理員可以設定節點升級策略,調整 Google Kubernetes Engine (GKE) 升級 GKE 叢集節點的方式。如要進一步瞭解節點升級策略,請參閱「節點升級策略」。

事前準備

開始之前,請確認您已執行下列工作:

  • 啟用 Google Kubernetes Engine API。
  • 啟用 Google Kubernetes Engine API
  • 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行 gcloud components update 指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文件中的指令。

需求條件

設定節點升級策略

設定叢集的標準節點集區時,您可以選取並設定下列其中一種支援的節點升級策略:

您可以運用這些升級策略,根據叢集環境的需求,最佳化節點集區升級程序。Standard 叢集中由 Autopilot 管理的節點集區會使用節點數擴充升級,您無法選取其他策略或變更設定。

設定節點數擴充升級

節點數擴充升級可讓您變更 GKE 一次升級的節點數量,以及升級對工作負載造成的干擾程度。

每個節點集區都會定義 max-surge-upgrade 和 max-unavailable-upgrade 旗標。如要進一步瞭解如何選擇合適的參數,請參閱「最佳化節點數擴充升級設定」。

您可以在建立或更新叢集或節點集區時,變更這些設定。

下列變數會用於下方提及的指令:

  • CLUSTER_NAME:節點集區所在叢集的名稱。
  • COMPUTE_ZONE:叢集的可用區。
  • NODE_POOL_NAME:節點集區的名稱。
  • NUMBER_NODES:叢集各可用區的節點集區節點數量。
  • SURGE_NODES:每次升級節點集區時要建立的額外 (擴充) 節點數量。
  • UNAVAILABLE_NODES:節點集區每次升級時可同時無法使用的節點數量。

使用特定突增參數建立叢集

如要建立叢集,並為節點數擴充升級作業指定特定設定,請使用 max-surge-upgrade 和 max-unavailable-upgrade 旗標。

gcloud container clusters create CLUSTER_NAME \
    --max-surge-upgrade=SURGE_NODES --max-unavailable-upgrade=UNAVAILABLE_NODES

建立停用節點數擴充升級功能的叢集

如要建立叢集,但不要進行突波升級,請將 max-surge-upgrade 旗標的值設為 0。

gcloud container clusters create CLUSTER_NAME \
    --max-surge-upgrade=0 --max-unavailable-upgrade=1

建立具有特定激增參數的節點集區

如要在現有叢集中建立節點集區,並為突波升級作業指定設定,請使用 max-surge-upgrade 和 max-unavailable-upgrade 旗標。

gcloud container node-pools create NODE_POOL_NAME \
    --num-nodes=NUMBER_NODES --cluster=CLUSTER_NAME \
    --max-surge-upgrade=SURGE_NODES --max-unavailable-upgrade=UNAVAILABLE_NODES

變更現有節點集區的升級緩衝設定

如要更新現有節點集區的升級設定,請使用 max-surge-upgrade 和 max-unavailable-upgrade 旗標。如果將 max-surge-upgrade 設為大於 0,GKE 會建立擴充節點。如果將 max-surge-upgrade 設為 0,GKE 就不會建立激增節點。

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --max-surge-upgrade=SURGE_NODES --max-unavailable-upgrade=UNAVAILABLE_NODES

檢查在節點集區上是否已啟用節點數擴充升級功能

如要查看節點集區是否已啟用節點數擴充升級功能,請使用 gcloud 描述叢集的參數:

gcloud container node-pools describe NODE_POOL_NAME \
    --cluster=CLUSTER_NAME

如果節點集區已啟用節點數擴充升級,列出的策略會是 SURGE。

設定藍綠升級

透過藍綠節點集區升級,您可以控制:

  • BATCH_NODE_COUNT 或 BATCH_PERCENT:GKE 一次排空的節點批次大小,也就是從節點中移除 Pod。預設為 BATCH_NODE_COUNT=1。如果任一設定設為 0,GKE 會略過這個階段,直接進入觀察節點集區階段。
  • BATCH_SOAK_DURATION:各批節點耗盡之間的時間。
  • NODE_POOL_SOAK_DURATION:浸泡時間長度,可讓您在新節點設定上驗證工作負載。

如要進一步瞭解藍綠升級的各個階段,請參閱藍綠升級的各個階段。

下列變數會用於下一節列出的指令:

  • CLUSTER_NAME:節點集區的叢集名稱。
  • NODE_POOL_NAME:節點集區的名稱。
  • NUMBER_NODES:叢集各可用區中,節點集區的節點數量。
  • BATCH_NODE_COUNT:在藍色集區排空階段,要在一批中排空的藍色節點數量。預設值為「1」。如果設為 0,系統就會略過藍色集區清空階段。
  • BATCH_PERCENT:在藍色集區排空階段,批次排空的藍色節點百分比,以 0 到 1 (含) 之間的小數表示。如果百分比不是節點的整數,GKE 會無條件捨去至最接近的節點,但至少會保留 1 個節點。如果設為 0,系統就會略過藍色集區耗盡階段。
  • BATCH_SOAK_DURATION:等待各個批次項目清空完畢所需的時間長度 (以秒為單位),預設值為 0。
  • NODE_POOL_SOAK_DURATION:等待所有批次項目清空完畢所需的時間長度 (以秒為單位),預設值為 3600 秒。

建立採用藍綠升級策略的節點集區

建立使用藍綠升級預設參數的節點集區

如要在現有叢集中建立節點集區,並使用藍綠升級策略和預設參數,請使用下列指令:

gcloud container node-pools create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-blue-green-upgrade

建立節點集區,並使用藍綠升級策略,搭配絕對節點數量的批次大小

如要建立使用自訂藍綠升級設定的節點集區,請在節點集區建立指令中使用參數旗標。

這個指令會建立節點集區,並使用批次排空作業的絕對節點計數,設定下列自訂藍綠色設定:

  • BATCH_NODE_COUNT = 2
  • BATCH_SOAK_DURATION = 10 秒
  • NODE_POOL_SOAK_DURATION = 600 秒
gcloud container node-pools create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-blue-green-upgrade \
    --standard-rollout-policy=batch-node-count=2,batch-soak-duration=10s \
    --node-pool-soak-duration=600s

建立節點集區,並使用藍綠升級和以百分比為準的批次大小

這個指令會建立節點集區,並採用下列自訂藍綠設定,以百分比表示批次耗盡:

  • BATCH_PERCENTAGE = 25% (節點集區大小)
  • BATCH_SOAK_DURATION = 10 秒
  • NODE_POOL_SOAK_DURATION = 1800s
gcloud container node-pools create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-blue-green-upgrade \
    --standard-rollout-policy=batch-percent=0.25,batch-soak-duration=10s \
    --node-pool-soak-duration=1800s

更新現有節點集區,改用藍綠升級策略

更新節點集區,使用預設參數進行藍綠升級

如要將現有節點集區更新為藍綠升級策略,請使用下列指令:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-blue-green-upgrade

更新節點集區,使用藍綠升級機制,並以絕對節點數量做為批次大小

如要使用自訂設定,將現有節點集區更新為藍綠升級策略,請搭配節點集區建立指令使用參數標記。

這個指令會更新節點集區,使用下列自訂藍綠設定,並以絕對節點數量進行批次清空:

  • BATCH_NODE_COUNT = 2
  • BATCH_SOAK_DURATION = 10 秒
  • NODE_POOL_SOAK_DURATION = 600 秒
gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-blue-green-upgrade \
    --standard-rollout-policy=batch-node-count=2,batch-soak-duration=10s \
    --node-pool-soak-duration=600s

更新節點集區,以百分比為準的批次大小進行藍綠升級

這個指令會建立節點集區,並使用批次排空百分比,設定下列自訂藍綠色設定:

  • BATCH_PERCENTAGE = 25% (節點集區大小)
  • BATCH_SOAK_DURATION = 10 秒
  • NODE_POOL_SOAK_DURATION = 1800s
gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-blue-green-upgrade \
    --standard-rollout-policy=batch-percent=0.25,batch-soak-duration=10s \
    --node-pool-soak-duration=1800s

切換回節點數擴充升級

您可以透過設定變更藍綠升級的行為,並使用指令控制升級程序。

不過,如果您想改用節點數擴充升級,請執行下列指令切換回節點數擴充升級:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-surge-upgrade

設定自動調度資源的藍綠升級

如要對節點集區使用自動調度資源的藍綠升級,您不需要為批次大小或浸泡設定任何其他參數。不過,您可以設定封鎖和排空節點之間的時間長度。啟用這項升級策略前,請先詳閱最佳做法和限制。

建立使用自動調度資源藍綠升級的節點集區

建立節點集區,並啟用自動調度資源的藍綠升級功能:

gcloud container node-pools create NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --enable-autoscaling \
    --max-nodes=MAX_NODES \
    --enable-blue-green-upgrade \
    --autoscaled-rollout-policy=[wait-for-drain-duration=WAIT_FOR_DRAIN_DURATIONs]

如要設定 MIN_NODE 和 MAX_NODE 參數,請參閱叢集和節點集區設定方式的建議。

將選用的 WAIT_FOR_DRAIN_DURATION 參數替換為時間 (以秒為單位),以便在封鎖藍色集區後和排空節點前等待。您可以將這段時間設為 0 到 7 天,預設值為 3 天 (259200 秒)。

更新節點集區,以使用自動調度資源的藍綠升級

更新現有節點集區,使用自動調度資源的藍綠升級:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --enable-blue-green-upgrade \
    --autoscaled-rollout-policy=[wait-for-drain-duration=WAIT_FOR_DRAIN_DURATIONs]

將選用的 WAIT_FOR_DRAIN_DURATION 參數替換為時間 (以秒為單位),以便在封鎖藍色集區後和排空節點前等待。您可以將這段時間設為 0 到 7 天,預設值為 3 天 (259200 秒)。

檢查節點集區的升級設定

如要檢查節點集區目前的升級設定,可以使用下列指令描述節點集區:

gcloud container node-pools describe NODE_POOL_NAME \
    --cluster=CLUSTER_NAME

以下程式碼片段是指令的輸出範例。strategy 欄位會指出使用的升級策略:

  • SURGE 表示已啟用節點數擴充升級策略。
  • BLUE_GREEN 表示已啟用藍綠升級策略:

upgradeSettings:
  blueGreenSettings:
    nodePoolSoakDuration: 1800s
    standardRolloutPolicy:
      batchNodeCount: 1
      batchSoakDuration: 10s
  strategy: BLUE_GREEN

這個指令也會顯示藍綠升級作業的目前階段。進一步瞭解如何查看節點集區的升級設定。

後續步驟