本文提供最佳做法,協助平台管理員管理 Google Kubernetes Engine (GKE) 叢集升級作業。根據預設,GKE 會自動升級叢集控制層和節點的版本,提供新功能、修正錯誤和安全性修補程式,確保環境效能良好且安全。
為確保這些自動升級作業符合您的營運需求,並盡可能減少工作負載中斷,GKE 提供多項工具,讓您能充分控管。本指南說明如何有效運用這些工具,維持高效能和高可用性。如需基礎知識,請參閱「關於 GKE 叢集升級」。
除了叢集升級 (僅更新控制層和節點的 GKE 版本) 之外,GKE 也會定期對叢集執行其他更新。實作本文中的最佳做法,有助於因應這類異動。詳情請參閱「管理叢集生命週期異動,盡可能減少服務中斷情形」。
如要查看所有 GKE 最佳做法的整合總覽,請參閱「GKE 最佳做法」。檢查清單
下表總結了後續章節詳細說明的任務。建議您在準備叢集升級環境時,執行這些工作。
| 最佳做法 | Tasks |
|---|---|
| 透過發布管道,在功能推送速度與升級穩定性之間取得平衡 | |
| 透過維護政策選擇升級時間 | |
| 控管各叢集的升級作業 | |
| 控管升級觸發方式 | |
| 監控叢集升級作業 | |
| 在節點升級期間,盡量減少現有工作負載中斷的情況 |
透過發布管道,在功能推送速度與升級穩定性之間取得平衡
您可以透過發布管道,在功能推送速率與升級穩定性之間取得平衡。根據預設,GKE 叢集會註冊至一般發布管道。GKE 升級叢集的控制層和節點,以提供安全性修補程式、修正已知問題及推出新功能時,發布管道會決定叢集執行的 GKE 版本。舉例來說,如果您想盡快取得新功能,可以選擇搶鮮版;如果想使用穩定性較高的版本,則可選擇穩定版。如要進一步瞭解如何選擇特定管道,請參閱「有哪些管道可用」。
如果您想手動升級叢集,仍可選擇發布管道,並在選取新版本前,查看該管道的可用版本和自動升級目標,藉此享有相關優勢。
此外,如果您想盡快取得發布管道中的修補程式版本 (例如接收重大安全性修補程式),請參閱「關於提早取得修補程式版本」。
選擇子版本所需的支援程度
子版本在一般版推出後,GKE 最多會提供 24 個月的支援。這項支援服務包含 14 個月的標準支援,以及約 10 個月的延長支援 (透過延長版提供)。如要進一步瞭解 GKE 如何支援子版本,請參閱「子版本支援」。
如需在標準支援結束日期後,繼續使用特定子版本一段時間,並持續接收安全性修補程式,或想避免標準支援結束時強制執行,也可以使用延長版。詳情請參閱下文「需要長期支援時,請使用擴充版」。
子版本終止支援時,GKE 會根據叢集註冊的發布管道,自動升級叢集,確保叢集維持高效能和安全性。詳情請參閱「自動升級叢集,確保安全性和相容性」。如果您使用本文所述的工具,防止或延遲自動叢集升級作業,建議您在叢集執行的子版本終止支援前,手動升級叢集。否則 GKE 會自動升級叢集。
透過維護政策選擇升級時間
如要控管升級時間,請使用下列選項:
- 維護期間:選擇 GKE 可升級叢集的週期性時段,例如非尖峰營業時間。如果升級程序超出維護期間,GKE 會嘗試暫停作業,並在下一個維護期間繼續執行。
- 維護排除:選擇 GKE 無法升級叢集的特定時間範圍,例如零售業的大型特價活動期間。您也可以使用維護作業排除時段,暫時延後叢集的自動升級作業,例如發現其他叢集升級至新版本時發生問題。
- 在進階用途中,您可能需要手動執行特定類型的升級,而非由 GKE 執行。您可以使用維護排除項目,停用這類自動升級。舉例來說,您可以使用「不執行子版本或節點升級作業」範圍,停用所有子版本和節點升級作業。您必須手動執行這些升級,否則 GKE 會在子版本支援結束時升級叢集。
- 維護頻率:如果是進階用途,請使用叢集中斷預算,控管兩次連續自動升級之間的最短間隔。
設定維護政策後,您就能提高升級的可預測性,並確保升級作業在最適合工作負載的時間進行。
控管各叢集的升級作業
建議您使用多個環境,將軟體和基礎架構變更與正式環境分開測試,盡可能降低風險和不必要的停機時間。建議您至少建立一個正式環境,以及一個試產或測試環境。
建議使用下列環境:
| 環境 | 說明 |
|---|---|
| 正式環境 | 為重要業務應用程式的使用者提供即時流量。 |
| Canary 版 | 在升級所有叢集前,先測試一小部分正式環境。 |
| 預備中 | 將變更部署至正式環境前,請先確認從先前環境部署的所有新變更均正常運作。 |
| 測試 | 使用您將在正式環境中使用的 GKE 版本,對工作負載執行基準測試、測試和品質保證 (QA)。 |
| 開發 | 在正式環境中,請使用相同版本進行開發。在這個環境中,您會建立修正程式和遞增變更,以便部署至正式環境。 |
GKE 提供推出作業排序等功能,可協助您控管在這些不同環境中部署升級作業的方式,詳情請參閱下一節。
使用推出作業排序功能,在各個環境中推出
如要在這些環境內和環境之間逐步推出新的 GKE 版本,建議您使用推出作業排序。使用推出排序功能時,所有叢集在部署階段都會使用相同的發布管道和子版本。GKE 會按照您設定的順序,逐步推出新版本。當 GKE 在您的環境中推出新版本時,您可以確認叢集環境和工作負載是否在新版本中正常運作。
如果您要設定新環境,請使用自訂階段推出序列。這項新版推出順序功能可讓您分多個階段,將新版本推出至機群。舉例來說,GKE 可先升級正式環境中的初期測試環境,再升級其餘正式環境。
雖然我們不建議在新環境中使用,但您也可以使用舊版功能,即以機群為基礎的分階段推出順序。這個版本在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 會管理節點升級作業,您不必選擇要使用的特定策略。詳情請參閱 Autopilot 叢集的激增升級。
設定容許的服務中斷
使用 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 叢集的功能」。