這份文件提供平台管理員的最佳做法,協助管理 Google Kubernetes Engine (GKE) 叢集升級。根據預設,GKE 會自動升級叢集控制層和節點的版本,提供新功能、修正錯誤和安全性修補程式,確保環境效能良好且安全無虞。
為確保自動升級符合您的營運需求,並盡量減少工作負載中斷情形,GKE 提供相關工具,讓您盡可能控管升級作業。本指南說明如何有效運用這些工具,維持高成效和可用性。如要瞭解基礎知識,請參閱「關於 GKE 叢集升級」。
除了叢集升級 (僅更新控制層和節點的 GKE 版本) 之外,GKE 也會定期對叢集執行其他更新。實作本文中的最佳做法,有助於因應這類異動。詳情請參閱「管理叢集生命週期異動,盡可能減少服務中斷情形」。
如要查看所有 GKE 最佳做法的整合總覽,請參閱「GKE 最佳做法」。檢查清單
下表總結了後續章節詳細說明的任務。建議您在準備叢集升級環境時,執行這些工作。
| 最佳做法 | Tasks |
|---|---|
| 透過發布管道,在功能推送速度與升級穩定性之間權衡 | |
| 透過維護政策選擇升級時間 | |
| 控管叢集升級作業的推出程序 | |
| 控管升級觸發方式 | |
| 監控叢集升級作業 | |
| 在節點升級期間,盡量減少現有工作負載的中斷情況 |
透過發布管道,在功能推送速度與升級穩定性之間取得平衡
有了發布管道,您就能在功能推送速度與升級穩定性之間權衡。根據預設,GKE 叢集會註冊一般發布管道。GKE 升級叢集的控制層和節點,提供安全性修補程式、修正已知問題並推出新功能時,發布管道會決定叢集執行的 GKE 版本。舉例來說,如果您想盡快取得新功能,可以選擇搶鮮版;如果想使用穩定性較高的版本,則可選擇穩定版。如要進一步瞭解如何選擇特定管道,請參閱「可用的管道」。
如要手動升級叢集,您仍可選擇發布管道,並在選取新版本前查看管道的可用版本和自動升級目標,藉此獲得好處。
此外,如果您想盡快取得發布管道中的修補程式版本 (例如接收重大安全性修補程式),請參閱「關於提早取得修補程式版本」。
選擇次要版本所需的支援服務
在一般版中推出子版本後,GKE 最多會提供 24 個月的支援。這項支援服務包括 14 個月的標準支援,以及約 10 個月的延長支援 (透過延長版提供)。如要進一步瞭解 GKE 如何支援子版本,請參閱「子版本支援」。
如要在標準支援服務結束後,繼續使用特定子版本一段時間,並接收安全性修補程式,或想避免系統強制停止標準支援服務,也可以使用延長版。詳情請參閱後續章節「需要長期支援時使用 Extended 管道」。
子版本終止支援時,GKE 會根據叢集註冊的發布管道,自動升級叢集,確保叢集維持高效能和安全性。詳情請參閱「自動升級叢集,確保安全性和相容性」。如果您使用本文所述工具來防止或延後自動叢集升級,建議您在叢集執行子版本終止支援前,手動升級叢集。否則 GKE 會自動升級叢集。
透過維護政策選擇升級時間
如要控管升級時間,請使用下列項目:
- 維護期間:選擇 GKE 可升級叢集的週期性時段,例如業務離峰時段。如果升級程序超出維護期間,GKE 會嘗試暫停作業,並在下一個維護期間繼續執行。
- 維護作業排除事項:
選擇 GKE 無法升級叢集的特定時間範圍,例如零售業的大型特價活動期間。您也可以使用維護作業排除時段,暫時延後叢集的自動升級作業,例如發現其他叢集升級至新版本時發生問題。
- 如有進階需求,您可能需要手動執行特定類型的升級,而非由 GKE 執行。您可以使用維護排除項目停用這類自動升級。舉例來說,您可以使用「不執行子版本或節點升級作業」範圍,停用所有子版本升級和所有節點升級。您必須手動執行這些升級作業,否則 GKE 會在子版本支援期結束時升級叢集。
- 維護頻率:針對進階用途,請使用叢集服務中斷預算,控管連續兩次自動升級之間的最短間隔。
設定維護政策可提高升級的可預測性,並確保升級時間最適合工作負載。
控管叢集升級作業的推出程序
建議您使用多個環境,與正式環境分開測試軟體和基礎架構變更,將風險和不必要的停機時間降到最低。建議您至少要有正式環境,以及試產或測試環境。
建議使用下列環境:
| 環境 | 說明 |
|---|---|
| 正式環境 | 為重要業務應用程式的使用者提供即時流量。 |
| Canary 版 | 在升級所有叢集之前,先測試一小部分正式環境。 |
| 預備中 | 請先確認從先前環境部署的所有新變更都能正常運作,再將變更部署至正式環境。 |
| 測試 | 使用正式環境中使用的 GKE 版本,對工作負載執行基準化、測試和品質保證 (QA)。 |
| 開發 | 在正式環境中,請使用相同版本進行開發。您可以在這個環境中建立修正內容和增量變更,並部署至正式環境。 |
GKE 提供推出作業排序等功能,協助您控管升級作業在這些不同環境中的部署方式,詳情請參閱下一節。
使用推出作業排序功能,在各個環境中推出
如要在這些環境中逐步推出新的 GKE 版本,建議使用推出順序。使用推出排序功能時,所有叢集在部署階段都會使用相同的發布管道和子版本。GKE 會按照您設定的順序,逐步推出新版本。當 GKE 在您的環境中推出新版本時,您可以確認叢集環境和工作負載是否在新版本中正常運作。
如要設定新環境,請使用自訂階段的推出順序。 這個新版推出順序功能可讓您分階段將新版本推出至車隊。採用這種方法後,GKE 就能先升級正式環境中的 Canary 環境,再升級其餘正式環境。
雖然我們不建議在新環境中使用,但您也可以使用舊版功能,也就是以車隊為基礎的推出順序。這個版本的功能是Google Cloud 控制台中唯一支援的版本,但功能較有限。
測試 GKE 修補程式和次要升級
GKE 會自動將叢集升級至新修補程式,頻率最高可達每週一次。不過,子版本升級每年只會進行約三次。相較於相同 Kubernetes 子版本的修補程式,新的子版本會導入更多變更。建議您在環境中推出子版本升級時,進行額外審查,確保新子版本能與叢集和工作負載正常運作。
升級叢集前執行檢查
執行叢集自動升級作業前,GKE 會先驗證新版本 (時間長度取決於發布版本),並檢查叢集是否已準備就緒。
升級叢集前,建議您採取下列做法:
- 所有升級作業 (包括修補程式和子版本升級):
- 如要進行次要升級,請一併查看下列事項:
- 查看 API 淘汰計畫。詳情請參閱新版 GKE 版本資訊、Kubernetes 變更記錄,以及「功能和 API 淘汰項目」。
- 確認控制層和節點之間的版本偏差在支援範圍內。GKE 支援執行比控制層早兩個次要版本的節點。詳情請參閱「 GKE 版本差異政策」。
- 節點升級:
- 請確認您有足夠的資源,可供節點使用的節點升級策略使用。詳情請參閱「確保節點升級的資源」。
控管升級觸發方式
根據預設,GKE 會定期自動將叢集升級至新版本。不過,您也可以手動升級叢集,精確掌握升級時間,並控管叢集執行的版本。
您可以採取以下做法:
- 手動升級叢集。
對進行中的自動或手動節點升級作業執行動作,包括:
- 取消升級。
- 繼續升級。
- 復原升級。
- 完成進行中的升級作業。
如要進一步控管升級程序,建議您設定維護排除項目,然後視需要手動升級。如要進一步瞭解手動升級,以及升級進行中時可執行的其他動作,請參閱「手動升級叢集或節點集區」。
監控叢集升級作業
為確保 GKE 升級作業順利進行,且叢集環境維持高效能和可用性,請使用下列工具監控叢集升級作業。如要隨時掌握叢集狀態,請使用通知、洞察與建議和記錄等工具。特別建議您留意支援終止通知、升級開始通知,以及子版本升級的選擇加入排程升級通知。設定快訊政策,確保您會收到這些通知。
如要瞭解目前升級方案的詳細資訊,請參閱下列資源:
- 如要瞭解特定叢集的升級資訊 (包括目前的自動升級目標),請參閱「掌握叢集升級作業」。
- 如要擷取一般自動升級目標,請參閱「目前版本」表格。如要查看叢集子版本的特定對應關係,請參閱版本更新版本資訊。
- 請參閱 GKE 發布時間表,瞭解子版本何時可供升級,以及支援服務何時結束。
- 透過 Cloud Logging 或 Pub/Sub 使用叢集通知,隨時掌握叢集的升級事件,例如排定的叢集升級 (搶先版)。
使用深入分析和最佳化建議,取得下列叢集專屬最佳化建議:
在節點升級期間,盡量減少現有工作負載的中斷情況
除了前幾節所述的一般最佳做法,我們建議您考慮採用其他進階設定,進一步自訂升級程序,以符合叢集環境和工作負載的需求。
特定工作負載設定檔的其他注意事項
特定類型的工作負載和叢集環境需要額外準備,才能升級叢集。如果工作負載符合下列一或多個類別,請考量以下額外事項:
- 在無法即時遷移的機器上執行的工作負載: GKE 節點 (由 GKE 代表您建立的 Compute Engine 執行個體) 需要定期維護底層基礎架構。大多數 Compute Engine 執行個體都可以即時遷移,也就是說,執行中的工作負載在維護期間不會中斷。不過,某些機型無法即時遷移,這表示在 GKE 節點上執行的工作負載可能會中斷。重要的是,AI/機器學習工作負載的加速器 (例如 GPU 和 TPU) 無法即時遷移。詳情請參閱「瞭解如何在 GKE 執行主機維護作業」。
- 容量受限的工作負載:如果工作負載使用的機器類型容量受限,執行叢集升級時,需要額外考量。詳情請參閱「確保節點升級的資源」。
- 有狀態的工作負載:如果工作負載是有狀態的,且對正常關閉和重新啟動有特定需求,執行叢集升級時就必須多加考量。詳情請參閱「確保工作負載已準備好應對中斷」。
請參閱下列各節,瞭解如何使用可用工具升級這些類型的工作負載。
選擇節點升級策略
在 GKE Standard 模式中,GKE 提供不同的節點升級策略,可決定節點集區中個別節點的升級方式。您可以選取 Standard 節點集區的升級策略,挑選合適的程序,在速度、工作負載中斷、風險控管和最佳成本效益之間達到平衡。您也可以設定策略參數,以符合自身需求。在 GKE Autopilot 模式中,GKE 會管理節點升級作業,您不需要選擇使用的特定策略。詳情請參閱「關於節點升級策略」。
設定容許的服務中斷
使用 Pod 中斷預算 (PDB),確保 GKE 在升級期間重新建立節點時,工作負載仍能維持足夠的備援能力,因為升級可能會暫時減少工作負載的副本數量。
如果已設定 PDB,當 Pod 數量等於或小於設定的上限時,GKE 不會關閉應用程式中的 Pod。GKE 升級作業最多會遵守 PDB 60 分鐘。此外,如果節點清空作業因 PDB 而受阻,或 PDB 逾時,且 Pod 將因違反 PDB 而強制刪除,GKE 會通知您。詳情請參閱「節點集區升級期間的中斷事件」。
使用安全終止功能關閉應用程式
您可以設定正常終止,確保工作負載有足夠的時間準備關機。在節點升級期間,GKE 會尊重正常終止設定,最長可達 60 分鐘 (使用預設的節點數擴充升級),以及最長 24 小時 (使用藍綠升級和自動調度藍綠升級 (搶先版))。
如要進一步瞭解如何設定正常終止設定,請參閱「設定 GKE,正常終止工作負載」。
需要長期支援時,請使用延長版本
如要讓叢集繼續使用子版本一段時間,請按照最佳做法,在延長版註冊叢集。在這個管道中,GKE 支援子版本的時間約為 24 個月。使用「延長」管道時,您可以控管子版本升級作業,只有在支援期限結束時,GKE 才會執行自動升級,除非您自行啟動升級作業。詳情請參閱「透過擴充管道取得長期支援」。
如果您不需要在標準支援期限結束後繼續使用特定子版本,但仍想控管子版本升級作業,請改用維護作業排除時段,並將範圍設為「不得執行子版本升級作業」。
為充分發揮管道效益,建議您遵循下列最佳做法。部分最佳做法需要手動操作,包括手動升級叢集和變更叢集的發布管道。請參閱下列支援情境,以及不應使用擴展頻道的時機。
暫時延長使用特定子版本
如果需要暫時將叢集保留在子版本,時間超過 14 個月的標準支援期限 (例如為了緩解使用下一個子版本中移除的已淘汰 API),請按照下列程序操作。您可以暫時將叢集從其他發布管道移至延長版管道,以便在準備升級至下一個子版本時,繼續接收安全性修補程式。準備好升級至下一個子版本時,請手動升級叢集,然後將叢集移回原始發布管道。
每年升級一到兩次子版本
如果希望叢集在準備升級至新的子版本時,盡可能減少中斷,同時仍能接收部分新功能,請按照下列步驟操作:
- 在延長版管道註冊叢集。
- 每年執行一到兩次連續子版本升級。例如,從 1.33 升級至 1.34,再升級至 1.35。
這個程序可確保叢集維持在可用的子版本,並接收新子版本的功能,但只有在您決定叢集已準備就緒時,才會升級子版本。
不適合使用擴充版管道的情況
如要將延長版頻道用於預期用途,必須手動操作。以下情境說明使用擴充版,但未主動管理叢集子版本的後果。
不採取任何行動,並以相同頻率接收次要升級
如要讓叢集永久使用特定子版本,請在延長版註冊叢集,不需採取其他行動。所有子版本最終都會停止支援,GKE 會自動將叢集從不受支援的子版本升級。因此,GKE 會將這個叢集從不支援的子版本升級至即將不支援的子版本,平均每四個月升級一次。這表示叢集會像其他發布管道一樣頻繁收到子版本升級,但會較晚收到新功能。
後續步驟
- 如要進一步瞭解 GKE 的不同模式,請參閱「比較 Autopilot 和 Standard 叢集的功能」。