本文提供平台管理員管理 Google Kubernetes Engine (GKE) 叢集升級的最佳做法。根據預設,GKE 會自動升級叢集控制層和節點的版本,提供新功能、錯誤修正和安全性修補程式,確保環境效能和安全性。
為確保自動升級作業符合您的營運需求,並盡量減少工作負載中斷情形,GKE 提供相關工具,讓您盡可能掌握控制權。本指南說明如何有效運用這些工具,維持高成效和高可用性。如要瞭解基本概念,請參閱「關於 GKE 叢集升級」。
除了叢集升級 (僅更新控制層和節點的 GKE 版本) 之外,GKE 也會定期對叢集執行額外更新。實作本文中的最佳做法,有助於因應這類異動。詳情請參閱「管理叢集生命週期變更,盡量減少中斷」。
如需所有 GKE 最佳做法的整合總覽,請參閱「GKE 最佳做法」。檢查清單
下表列出各項工作,後續章節將詳細說明。建議您在準備叢集升級環境時執行這些工作。
| 最佳做法 | Tasks |
|---|---|
| 透過發布管道,在功能推送速度與升級穩定性之間取得平衡 | |
| 透過維護政策選擇升級時間 | |
| 控管叢集升級的推出作業 | |
| 控管升級的觸發方式 | |
| 監控叢集升級作業 | |
| 在節點升級期間,盡量減少現有工作負載的中斷情況 |
透過發布管道,在功能推送速度與升級穩定性之間取得平衡
有了發布管道,您就能在功能推送速度與升級穩定性之間權衡。GKE 叢集預設會註冊一般發布管道。GKE 會升級叢集的控制層和節點,提供安全性修補程式、修正已知問題及推出新功能。發布管道會決定叢集執行的 GKE 版本。舉例來說,如果想盡快使用新功能,可以選擇「搶鮮版」;如果想使用穩定性較高的版本,請選擇「穩定版」。如要進一步瞭解如何選擇特定管道,請參閱「可用的管道」一文。
如要手動升級叢集,您仍可選擇發布管道,並在選取新版本前,查看該管道可用的版本和自動升級目標。
此外,如要盡快在發布管道中取得修補程式版本 (例如接收重要安全性修補程式),請參閱「提早取得修補程式版本」。
選擇次要版本所需的支援服務
在一般版管道中提供版本後,GKE 最多會支援該子版本 24 個月。這項支援服務包括 14 個月的標準支援,以及透過 Extended 管道提供的約 10 個月延長支援。如要進一步瞭解 GKE 如何支援子版本,請參閱「子版本支援」。
如要在標準支援服務結束後繼續使用特定子版本一段時間,並持續接收安全性修補程式,或想避免系統強制停止標準支援服務,也可以使用延長版。詳情請參閱下文「需要長期支援時,請使用 Extended 管道」一節。
子版本終止支援後,GKE 會根據叢集註冊的發布管道,自動升級叢集,確保叢集維持高效能和安全性。詳情請參閱「自動升級叢集,確保安全性和相容性」。如果您使用本文所述工具來防止或延後自動升級叢集,建議您在叢集執行的小版本終止支援前,手動升級叢集。如未手動升級,GKE 會自動升級叢集。
透過維護政策選擇升級時間
如要控管升級時間,請使用下列項目:
- 維護時段: 選擇週期性時段,讓 GKE 升級叢集,例如業務離峰時段。如果升級程序超出維護期間,GKE 會嘗試暫停作業,並在下一個維護期間繼續執行。
- 維護作業排除事項:
選擇 GKE 無法升級叢集的特定時間範圍,例如零售業的大型銷售活動期間。您也可以使用維護作業排除時段,暫時延後叢集的自動升級作業。舉例來說,如果發現其他叢集升級至新版本時發生問題,即可使用這項功能。
- 如有進階用途,您可能需要手動執行特定類型的升級,而不是由 GKE 執行。您可以使用維護排除條件停用這類自動升級。舉例來說,您可以使用「不執行任何次要或節點升級作業」範圍,停用所有次要升級和所有節點升級。您必須手動執行這些升級作業,否則 GKE 會在子版本支援期結束時升級叢集。
- 維護頻率:針對進階用途,請使用叢集服務中斷預算,控管連續兩次自動升級之間的間隔下限。
設定維護政策可提高升級的可預測性,並確保升級作業在最適合工作負載的時間進行。
控管叢集升級的推出作業
建議您使用多個環境,將風險和不必要的停機時間降到最低,方法是將軟體和基礎架構變更與正式環境分開測試。建議您至少要有正式環境,以及試產或測試環境。
建議使用下列環境:
| 環境 | 說明 |
|---|---|
| 正式環境 | 為重要業務應用程式的終端使用者提供即時流量。 |
| Canary 版 | 先在小部分正式環境中測試,再升級所有叢集。 |
| 預備 | 請先確認從先前環境部署的所有新變更都能正常運作,再將變更部署至正式環境。 |
| 測試 | 使用您將在正式環境中使用的 GKE 版本,對工作負載執行基準化、測試和品質保證 (QA)。 |
| 開發 | 請使用與實際工作環境相同的版本,進行積極開發。您可以在這個環境中建立修正內容和增量變更,以便部署至正式版。 |
GKE 提供推出作業排序等功能,協助您控管升級作業在這些不同環境中的部署方式,詳情請參閱下一節。
使用推出作業排序功能,在各個環境中推出
如要在這些環境中逐步推出新的 GKE 版本,建議使用推出順序。透過推出順序,所有叢集在部署階段都會使用相同的發布管道和子版本。GKE 會按照您設定的順序,逐步推出新版本。GKE 在環境中推出新版本時,您可以確認叢集環境和工作負載是否在新版本中正常運作。
如要設定新環境,請使用自訂階段的推出順序 (預覽版)。這個新版發布順序功能可讓您將新版本分階段發布至機群。舉例來說,採用這種方法後,GKE 可以在升級其餘正式環境之前,先升級正式環境中的初期測試版環境。如要瞭解這項功能的正式版,該版本使用更線性的模型,不含自訂階段,請參閱「關於透過推出順序進行叢集升級」。
測試 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 提供不同的節點升級策略,可決定節點集區中個別節點的升級方式。您可以為標準節點集區選擇升級策略,挑選合適的程序,在速度、工作負載中斷、風險控管和成本最佳化之間達到平衡。您也可以設定策略參數,以符合自身需求。在 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 才會執行自動升級,除非您自行啟動升級作業。詳情請參閱「透過 Extended 管道取得長期支援」。
如果不需要在子版本上停留的時間超過標準支援期限,但仍想控管子版本升級作業,請改用「不得執行子版本升級作業」範圍的維護作業排除時段。
為充分發揮管道效益,建議您遵循下列最佳做法。部分最佳做法需要手動操作,包括手動升級叢集和變更叢集發布管道。請參閱下列支援情境,以及不應使用擴充頻道的時機。
暫時延長使用特定子版本
如果需要將叢集暫時保留在子版本,時間超過 14 個月的標準支援期限 (例如為了避免使用下一個子版本中移除的已淘汰 API),請按照下列程序操作。您可以暫時將叢集從其他發布管道移至延長版管道,以便在準備升級至下一個子版本時,繼續接收安全性修補程式。準備好升級至下一個子版本時,請手動升級叢集,然後將叢集移回原始發布管道。
每年升級一到兩次子版本
如要在叢集升級至新子版本時,盡量減少叢集的中斷時間,同時接收部分新功能,請按照下列步驟操作:
- 在延長版管道註冊叢集。
- 每年執行一到兩次,每次升級兩個子版本。舉例來說,您可以從 1.33 升級至 1.34,再升級至 1.35。
這個程序可確保叢集維持在可用的次要版本,並接收新次要版本的功能,但只有在您決定叢集已準備就緒時,才會升級次要版本。
不應使用擴展管道的情況
如要使用延長版頻道,必須手動操作。以下情境說明使用延長版管道,但未主動管理叢集子版本會造成的後果。
不採取任何行動,以相同頻率接收次要升級
如要讓叢集永久使用特定子版本,請在延長版註冊叢集,然後不必採取任何行動。所有子版本最終都會停止支援,GKE 會自動將叢集從不受支援的子版本升級。因此,GKE 會將這個叢集從不支援的子版本升級至即將不支援的子版本,平均大約每四個月升級一次。也就是說,叢集在其他發布管道上接收子版本升級的頻率相同,但會較晚收到新功能。
後續步驟
- 如要進一步瞭解 GKE 的不同模式,請參閱「比較 Autopilot 和 Standard 叢集的功能」。