這份文件將介紹叢集干擾預算的概念,並說明如何視需要自訂預算,以符合環境需求。叢集中斷預算是功能套件中的一項工具,可協助平台管理員盡量減少工作負載中斷情形,同時提升效能、可靠性和安全性。
叢集升級 (也就是 GKE 更新叢集控制層和節點所用的版本) 可能是 GKE 叢集的主要中斷來源。如要進一步瞭解升級作業,請參閱「關於 GKE 叢集升級」。如要瞭解其他可盡量減少叢集升級期間中斷情形的功能,請參閱該文件的「控管叢集升級」一節。如要進一步瞭解叢集升級以外的叢集生命週期異動,請參閱「管理叢集生命週期異動,盡量減少中斷」。
什麼是叢集服務中斷預算
為確保叢集不會過於頻繁地受到自動升級作業影響,GKE 預設會套用叢集干擾預算,設定自動叢集控制層升級作業之間的最短間隔。GKE 也會在叢集建立後到首次自動升級控制層之間,套用這項預算。此外,如果您手動升級叢集控制層,GKE 會在下次自動升級時遵守叢集干擾預算。即使升級作業違反叢集服務中斷預算,您還是可以手動升級叢集。
在叢集中,GKE 會先自動升級控制層,再升級節點。因此,這項預算也會設定自動升級叢集節點的最低頻率。
GKE 針對不同類型的版本升級,設有預設的叢集 disruption budget:
- 修補程式版本升級:24 小時
- 子版本升級:30 天
GKE 會在相同類型的升級之間分配預算。舉例來說,在 1.35.0-gke.1403000 和 1.35.0-gke.1624000 之間升級叢集時,GKE 會等待 24 小時,而在 1.34 和 1.35 之間升級時,則會等待 30 天。不過,GKE 會在次要升級後等待 24 小時,再執行修補程式升級。
GKE 只會在叢集升級時使用叢集服務中斷預算,不會用於其他類型的 GKE 叢集變更。
叢集服務中斷預算與維護期間和排除時段不同,但兩者可搭配使用。維護政策可控管 GKE 叢集維護作業的執行時間,而叢集中斷預算則可設定叢集升級之間的時間間隔。
何時應自訂叢集的 disruption budget
GKE 的預設叢集中斷預算可兼顧升級作業的及時性,同時避免連續升級,並盡量維持穩定性。不過,這些一般值可能不適合您的叢集環境。
如要控管自動叢集升級間隔時間下限,可以設定叢集干擾預算。舉例來說,請參考下列情境:
- 您有自訂程序,可在將 GKE 控制層修補程式版本推送至正式環境前進行評估,且這個程序需要特定時間,超過預設叢集預算。
- 您有大型叢集,升級所有節點集區需要較長時間。您希望這些節點集區的版本維持相對一致。因此,您降低修補程式升級頻率,每月升級一次,同時允許頻繁的維護期間,確保節點集區升級作業及時完成。
為自動升級設定叢集 disruption budget
如果您需要控制兩次次要升級或兩次修補程式升級之間的間隔,可以自行設定叢集停機預算。不過,我們建議您先設定維護時間範圍,為 GKE 叢集維護作業設定週期性時間。接著,您可以視需要使用叢集中斷預算,自訂升級間隔。
建議您搭配使用叢集中斷預算和 GKE 提供的其他工具,控管叢集升級作業。這些設定適用於所有其他升級工具,只會影響 GKE 自動將叢集升級至新版本時的時機。GKE 仍會遵守維護期間和排除項目、遵循推出作業排序順序,並套用通常用於自動升級的其他標準做法。
修補程式升級作業的預設叢集 disruption budget 為 24 小時,子版本升級作業則為 30 天。你可以將間隔時間設為 0 到 90 天之間的任意天數。不過,更新這些值時,請注意下列事項:
- 除非您有特定的版本資格程序,且所需時間超過 30 天,否則建議不要將修補程式升級間隔設為超過 30 天。如果升級頻率低於 30 天,可能會錯過重大修補程式。
- 建議您在叢集環境可接受的範圍內,盡可能頻繁地進行次要升級。如果將子版本升級間隔設為最長 90 天,GKE 就更有可能在子版本支援期結束時,必須升級叢集。當子版本終止支援時,GKE 會遵循獨立的叢集干擾預算,進行為期 7 天的子版本升級,且不會遵循您設定的任何叢集干擾預算。詳情請參閱「支援終止後的自動升級作業」。
- 建議您將修補程式升級間隔設為比次要升級間隔短的時間。
事前準備
開始之前,請確認您已執行下列工作:
- 啟用 Google Kubernetes Engine API。 啟用 Google Kubernetes Engine API
- 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行
gcloud components update指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文件中的指令。
設定叢集中斷預算
首先,如果尚未設定維護時段,建議您先完成這項操作。
接著,如要設定自訂叢集中斷預算,請在使用 gcloud CLI 建立或更新叢集時,使用下列旗標:
- 次要升級:
--maintenance-minor-version-disruption-interval=MINOR_INTERVAL - 修補程式升級:
--maintenance-patch-version-disruption-interval=PATCH_INTERVAL
請分別將 MINOR_INTERVAL 或 PATCH_INTERVAL 替換為以秒為單位的時間長度,範圍介於 0 天 (0s) 到 90 天 (7776000s) 之間。
您可以在下列情況使用這些標記:
- 建立叢集:
- 更新叢集:
gcloud container cluster update
您可以同時或單獨使用這些旗標。
將叢集干擾預算重設為預設值
如要將叢集 disruption budget 重設為預設值 (修補程式升級作業為 24 小時,子版本升級作業為 30 天),可以使用下列旗標:
- 次要升級:
--clear-maintenance-minor-version-disruption-interval - 修補程式升級:
--clear-maintenance-patch-version-disruption-interval
使用 gcloud container cluster
update 指令更新叢集時,請使用這些旗標。
您可以同時使用這些標記,也可以單獨使用。