平台管理員可以設定節點升級策略,調整 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-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
= 2BATCH_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
= 2BATCH_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
這個指令也會顯示藍綠升級作業的目前階段。進一步瞭解如何檢查節點集區的升級設定。