控制自動升級造成的干擾頻率

這份文件將介紹叢集干擾預算的概念,並說明如何視需要自訂預算,以符合環境需求。叢集中斷預算是功能套件中的一項工具,可協助平台管理員盡量減少工作負載中斷情形,同時提升效能、可靠性和安全性。

叢集升級 (也就是 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) 之間。

您可以在下列情況使用這些標記:

您可以同時或單獨使用這些旗標。

將叢集干擾預算重設為預設值

如要將叢集 disruption budget 重設為預設值 (修補程式升級作業為 24 小時,子版本升級作業為 30 天),可以使用下列旗標:

  • 次要升級:--clear-maintenance-minor-version-disruption-interval
  • 修補程式升級:--clear-maintenance-patch-version-disruption-interval

使用 gcloud container cluster update 指令更新叢集時,請使用這些旗標。

您可以同時使用這些標記,也可以單獨使用。