設定節點升級策略


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

事前準備

開始之前,請確認你已完成下列工作:

  • 啟用 Google Kubernetes Engine API。
  • 啟用 Google Kubernetes Engine API
  • 如要使用 Google Cloud CLI 執行這項工作,請安裝初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行 gcloud components update,取得最新版本。

設定節點升級策略

設定叢集的節點集區時,您可以選取並設定其中一種支援的節點升級策略,也就是大量升級藍綠升級。您可以根據叢集環境需求,使用這些升級策略,最佳化節點集區升級程序。

設定節點數擴充升級功能

節點數擴充升級功能可讓您同時變更 GKE 升級的節點數量,以及升級作業對工作負載造成中斷量。

可針對每個節點集區定義 max-surge-upgrademax-unavailable-upgrade 旗標。如要進一步瞭解如何選擇合適的參數,請參閱「最佳化突波升級設定」。

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

下列指令會使用以下變數:

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

建立具有特定節點數擴充參數的叢集

如要建立具有特定節點數擴充升級設定的叢集,請使用 max-surge-upgrademax-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-upgrademax-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-upgrademax-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_COUNTBATCH_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 = 1800 秒
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 = 1800 秒
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 describe NODE_POOL_NAME \
    --cluster=CLUSTER_NAME

以下程式碼片段是指令的輸出範例。strategy 欄位會指出使用的升級策略:SURGE 表示已啟用節點數擴充升級策略,BLUE_GREEN 表示已啟用藍綠升級策略。

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

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

後續步驟