本頁面說明如何在 Google Kubernetes Engine (GKE) 中設定節點自動升級功能。
總覽
當系統代您更新控制層時,「節點自動升級」可協助您更新叢集中的節點,與叢集控制層版本保持一致。使用 Google Cloud 控制台或 gcloud
指令建立新的叢集或節點集區時,系統預設會啟用節點自動升級功能。
您可以進一步瞭解叢集和節點升級。
節點自動升級具有以下優點:
- 降低管理負擔:當控制層代替您升級時,您不必手動追蹤和更新節點。
- 更高的安全性:有時系統會發佈新的二進位檔以修正安全性問題。有了自動升級功能,GKE 會確保自動套用安全性更新,保持在最新狀態。
- 使用方便:提供簡單的方式來讓節點保持在最新狀態,擁有 Kubernetes 的最新功能。
節點集區啟用自動升級功能後,只要符合選取條件 (請參閱版本說明),就會排定升級時間。為確保叢集和機群穩定性,我們會在數週內分階段推出這項功能。執行升級時,節點會被清空並重新建立,以符合目前的控制層版本。節點重新建立之後,您先前對該節點 VM 開機磁碟所做的變更便會失效。如要讓重新建立的節點沿用原有變更,請使用 DaemonSet。
Alpha 版叢集不支援節點自動升級功能。如果您使用的叢集含有 Windows Server 節點集區,請先參閱「升級 Windows Server 節點集區」,再啟用節點自動升級功能。
檢查現有節點集區的自動升級狀態
您可以使用 Google Cloud 控制台或 gcloud
指令,檢查節點集區是否已啟用或停用自動升級功能。
gcloud
如要檢查節點集區的自動升級狀態,請執行下列指令:
gcloud container node-pools describe NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location CONTROL_PLANE_LOCATION
更改下列內容:
NODE_POOL_NAME
:節點集區的名稱。CLUSTER_NAME
:節點集區所在叢集的名稱。CONTROL_PLANE_LOCATION
:叢集控制層的 Compute Engine 位置。為地區叢集提供地區,或為區域叢集提供區域。
在輸出內容中找出 autoUpgrade
欄位,即可查看節點集區是否啟用或停用自動升級功能。
management:
autoUpgrade: true
控制台
如要檢查節點集區的自動升級狀態,請執行下列操作:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在叢集清單中,按一下要查看的叢集名稱。
按一下「Nodes」(節點) 分頁標籤。
在「Node Pools」(節點集區) 下方,按一下要查看的節點集區名稱。
在「Node pool details」(節點集區詳細資料) 頁面中,前往「Management」(管理),查看「Auto-upgrade」(自動升級) 欄位的值。
啟用現有節點集區的節點自動升級功能
使用 Google Cloud 控制台或 gcloud
指令建立新叢集時,系統預設會啟用節點自動升級功能。
您可以啟用節點自動升級功能 (若目前停用的話)。
gcloud
如要啟用現有節點集區的自動升級功能,請執行下列指令:
gcloud container node-pools update NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location CONTROL_PLANE_LOCATION \
--enable-autoupgrade
更改下列內容:
NODE_POOL_NAME
:節點集區的名稱。CLUSTER_NAME
:節點集區所在叢集的名稱。CONTROL_PLANE_LOCATION
:叢集控制層的 Compute Engine 位置。為地區叢集提供地區,或為區域叢集提供區域。
控制台
如要啟用現有節點集區的自動升級功能,請執行下列步驟:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在叢集清單中,按一下您要修改的叢集名稱。
按一下「Nodes」(節點) 分頁標籤。
在「Node Pools」(節點集區) 下方,按一下要修改的節點集區名稱。
在「Node pool details」(節點集區詳細資料) 頁面中,按一下 edit「Edit」(編輯)。
在「Management」(管理) 下方,勾選「Enable auto-upgrade」(啟用自動升級功能) 核取方塊。
按一下 [儲存]。
如要進階控制節點何時可自動升級,建議您設定維護期間和排除的時段。
查看節點升級狀態
您可以使用 gcloud container operations
查看升級作業的狀態。
查看叢集中所有執行中和已完成作業的清單 (如果作業少於 5,000 項,則為過去 12 天的作業;如果作業超過 5, 000 項,則為最近 5,000 項作業):
gcloud container operations list
每個作業都會獲派一個「作業 ID」和作業類型,還有開始和結束時間、目標叢集和狀態。清單看起來類似以下範例:
NAME TYPE ZONE TARGET STATUS_MESSAGE STATUS START_TIME END_TIME
operation-1505407677851-8039e369 CREATE_CLUSTER us-west1-a my-cluster DONE 20xx-xx-xxT16:47:57.851933021Z 20xx-xx-xxT16:50:52.898305883Z
operation-1505500805136-e7c64af4 UPGRADE_CLUSTER us-west1-a my-cluster DONE 20xx-xx-xxT18:40:05.136739989Z 20xx-xx-xxT18:41:09.321483832Z
operation-1505500913918-5802c989 DELETE_CLUSTER us-west1-a my-cluster DONE 20xx-xx-xxT18:41:53.918825764Z 20xx-xx-xxT18:43:48.639506814Z
如要取得某個特定作業的詳細資訊,請使用下列指令來指定作業 ID:
gcloud container operations describe OPERATION_ID
例如:
gcloud container operations describe operation-1507325726639-981f0ed6
endTime: '20xx-xx-xxT21:40:05.324124385Z'
name: operation-1507325726639-981f0ed6
operationType: UPGRADE_CLUSTER
selfLink: https://container.googleapis.com/v1/projects/.../kubernetes-engine/docs/zones/us-central1-a/operations/operation-1507325726639-981f0ed6
startTime: '20xx-xx-xxT21:35:26.639453776Z'
status: DONE
targetLink: https://container.googleapis.com/v1/projects/.../kubernetes-engine/docs/zones/us-central1-a/clusters/...
zone: us-central1-a
如果升級作業已取消或失敗,但部分作業已完成,您可以繼續或復原升級作業。
檢查節點集區升級設定
您可以使用 gcloud container node-pools
describe
指令,查看節點集區使用的節點升級策略詳細資料。如果是藍綠升級,這項指令也會傳回升級的目前階段。
執行下列指令:
gcloud container node-pools describe NODE_POOL_NAME \
--cluster=CLUSTER_NAME
更改下列內容:
NODE_POOL_NAME
:要說明的節點集區名稱。CLUSTER_NAME
:要說明節點集區的叢集名稱。
這項指令會輸出目前的升級設定。以下範例顯示使用藍綠升級策略時的輸出內容。
upgradeSettings:
blueGreenSettings:
nodePoolSoakDuration: 1800s
standardRolloutPolicy:
batchNodeCount: 1
batchSoakDuration: 10s
strategy: BLUE_GREEN
如果您使用藍綠升級策略,輸出內容也會包含藍綠升級設定和目前中間階段的詳細資料。以下範例顯示這類要求可能看起來的樣子:
updateInfo:
blueGreenInfo:
blueInstanceGroupUrls:
- https://www.googleapis.com/compute/v1/projects/{PROJECT_ID}/zones/{LOCATION}/instanceGroupManagers/{BLUE_INSTANCE_GROUP_NAME}
bluePoolDeletionStartTime: {BLUE_POOL_DELETION_TIME}
greenInstanceGroupUrls:
- https://www.googleapis.com/compute/v1/projects/{PROJECT_ID}/zones/{LOCATION}/instanceGroupManagers/{GREEN_INSTANCE_GROUP_NAME}
greenPoolVersion: {GREEN_POOL_VERSION}
phase: DRAINING_BLUE_POOL
停用節點自動升級功能
雖然不建議這麼做,但如果基礎叢集未註冊發布管道,您可以停用現有節點集區的節點自動升級功能。
停用節點自動升級功能前的注意事項
如果停用節點集區的節點自動升級功能,GKE 就不會更新節點版本。選擇停用節點自動升級功能後,GKE 仍會升級叢集的控制層。
停用後,系統不會更新版本,但仍會執行所有維護工作
停用節點自動升級功能只會防止 GKE 更新節點版本,但不會阻止 GKE 啟動其他維護工作。舉例來說,即使已停用節點自動升級功能,只要在叢集上觸發 IP 位址輪替、啟用網路政策或 PSC 遷移,不管選定的節點集區版本為何,系統會重新建立所有節點並與控制層版本相同。如要控管維護時間點,請使用維護期間和排除時段。
停用後,您必須負責確保控制層節點相容性
如果停用節點集區的節點自動升級功能,您應確保叢集節點執行的版本與叢集的控制層版本相容,並遵守 GKE 版本差異政策。停用節點自動升級功能後,節點集區只會停止升級,直到標準支援期結束為止。如果節點執行的版本已停用,GKE 會升級節點,確保叢集健康狀態良好。
如要瞭解終止支援的確切時間,請參閱「各發布管道的預估時間表」。如果節點執行的版本不受支援,系統可能不會在版本支援期限結束時立即升級,實際時間可能因 Google 的決定而異。
停用不會停止執行中的作業
停用節點自動升級功能後,系統不會停止或取消節點集區中節點的任何升級作業。如要取消或停止進行中的升級作業,請按照「取消節點升級」一節的說明操作。如果發現工作負載在升級的節點上失敗,並想避免進一步中斷,取消節點升級就很有幫助。
如果整個節點集區的升級作業已完全完成,則無法復原或取消升級。如要降級節點集區,請參閱降級節點集區。
停用現有節點集區的節點自動升級功能
gcloud
若要停用現有節點集區的自動升級功能,請執行下列指令:
gcloud container node-pools update NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location CONTROL_PLANE_LOCATION \
--no-enable-autoupgrade
主控台
若要停用現有節點集區的自動升級功能,請執行下列步驟:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在叢集清單中,按一下您要修改的叢集名稱。
按一下「Nodes」(節點) 分頁標籤。
在「Node Pools」(節點集區) 下方,按一下要修改的節點集區名稱。
在「Node pool details」(節點集區詳細資料) 頁面中,按一下 edit「Edit」(編輯)。
在「管理」下方,取消勾選「啟用自動升級功能」核取方塊。
再按一次 [Save] (儲存) 即可修改叢集。
建立啟用節點自動升級功能的叢集或節點集區
gcloud
如要針對「預設節點集區」建立啟用自動升級功能的叢集,請在 gcloud container clusters
create
指令中指定 --enable-autoupgrade
旗標:
gcloud container clusters create CLUSTER_NAME \
--location CONTROL_PLANE_LOCATION \
--enable-autoupgrade
如要建立啟用自動升級功能的節點集區,請在 gcloud container node-pools create
指令中指定 --enable-autoupgrade
旗標:
gcloud container node-pools create NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location CONTROL_PLANE_LOCATION \
--enable-autoupgrade
控制台
根據預設,使用 Google Cloud 控制台建立的叢集和節點集區已啟用自動升級功能。如需建立叢集和節點集區的操作說明,請參閱「建立叢集」或「新增及管理節點集區」。
您可以停用新節點集區的自動升級功能。在叢集建立頁面中,按一下要修改的節點集區名稱,然後清除「啟用自動升級功能」。
接收升級通知
GKE 會將升級通知發布至 Pub/Sub,您可以透過這個管道接收 GKE 發送的叢集相關資訊。
詳情請參閱「接收叢集升級通知」。
變更節點數擴充升級參數
如要進一步瞭解如何變更節點數擴充升級參數,請參閱「設定節點數擴充升級」。
在節點集區升級期間控管作業
在自動升級和手動啟動節點集區升級期間,您可以採取下列動作。
取消節點集區升級
您可隨時取消升級。如要進一步瞭解取消節點數擴充升級的影響,請參閱「取消節點數擴充升級」。如要進一步瞭解取消藍綠升級的影響,請參閱「取消藍綠升級」。
取得升級作業的 ID:
gcloud container operations list
取消升級:
gcloud container operations cancel OPERATION_ID
請參閱 gcloud container operations cancel
說明文件。
繼續升級節點集區
如要繼續升級,請再次手動啟動升級,並指定原始升級的目標版本。
舉例來說,如果升級失敗,或是您暫停進行中的升級作業,可以對節點集區再次啟動相同的升級作業,並指定初始升級作業的目標版本,藉此繼續已取消的升級作業。
如要進一步瞭解繼續升級作業的影響,請參閱「繼續節點數擴充升級」和「藍綠升級」。
如要繼續升級,請使用下列指令:
gcloud container clusters upgrade CLUSTER_NAME \
--node-pool=NODE_POOL_NAME \
--cluster-version VERSION
更改下列內容:
NODE_POOL_NAME
:要繼續升級的節點集區名稱。CLUSTER_NAME
:要繼續升級的節點集區叢集名稱。VERSION
:取消升級節點集區的目標版本。
詳情請參閱 gcloud container clusters upgrade
說明文件。
復原節點集區升級
您可以將節點集區復原,將升級的節點降級至節點集區升級前的原始狀態。
如果升級作業取消、失敗或因維護期間逾時而未完成,請使用 rollback
指令。或者,如要指定版本,請按照降級節點集區的說明操作。
如要進一步瞭解復原節點集區升級作業的影響,請參閱「復原節點數擴充升級」或「復原藍綠升級」。
如要復原升級,請執行下列指令:
gcloud container node-pools rollback NODE_POOL_NAME \
--cluster CLUSTER_NAME
更改下列內容:
NODE_POOL_NAME
:要復原節點集區升級的節點集區名稱。CLUSTER_NAME
:要復原升級的節點集區所在叢集名稱。
請參閱 gcloud container node-pools rollback
說明文件。
完成節點集區升級
如果您使用藍綠升級策略,可以在浸泡階段完成節點集區升級,略過其餘浸泡時間。
如要瞭解如何完成節點集區升級作業,請參閱「完成節點集區升級作業」。
使用藍綠升級策略時,請執行下列指令來完成升級:
gcloud container node-pools complete-upgrade NODE_POOL_NAME \
--cluster CLUSTER_NAME
更改下列內容:
NODE_POOL_NAME
:要完成升級的節點集區名稱。CLUSTER_NAME
:要完成升級的節點集區叢集名稱。
請參閱 gcloud container node-pools complete-upgrade
說明文件。
後續步驟
- 進一步瞭解節點集區。
- 進一步瞭解叢集和節點集區升級。
- 手動升級叢集或節點集區。