本頁說明您和 Google Kubernetes Engine (GKE) 如何在叢集生命週期內管理變更,盡量提升效能和可用性,同時減少工作負載中斷。
如果您是平台管理員,並希望規劃及最佳化叢集環境,盡量減少工作負載的中斷情形,歡迎參閱這個頁面。您可以先閱讀本頁面,再瞭解如何執行「管理叢集」和「叢集管理總覽」中說明的基本叢集管理工作。
代管平台和共同責任
GKE 是 Google 代管的 Kubernetes 開放原始碼容器自動化調度管理平台實作。如「GKE 運作方式」一文所述,GKE 叢集包含控制層 (內含執行系統元件的管理節點) 和工作站節點 (您可在其中部署工作負載)。
為工作負載建立最佳叢集環境,以盡可能提高效能和可用性,並減少中斷情形,是您和 Google 的共同責任:
- GKE 的責任是維護可靠、可用、安全且效能卓越的叢集環境。為此,GKE 會管理控制層、系統元件,以及 Autopilot 模式的工作站節點。
- 平台管理員的責任是設定叢集及管理工作負載,包括準備好處理中斷。在 Standard 模式中,您也可以建立及管理工作站節點,這些節點會分組到節點集區。
詳情請參閱 GKE 共同責任。
GKE 如何在叢集生命週期中管理變更
GKE 叢集是 Kubernetes 的實作項目,由多個程序和系統組成的網路,共同維護最佳環境,以執行工作負載。為管理叢集,GKE 會執行維護工作、進行變更、啟動作業、更新元件,以及升級控制層和節點版本。
應用程式的大部分日常運作都會在背景中悄悄進行,確保工作負載持續運作,不會中斷。不過,部分重大變更必須以可能暫時中斷工作負載的方式完成,詳情請參閱下一節。
部分叢集變更可能會中斷工作負載
GKE 會盡力確保工作負載順暢運作,但某些重要類型的變更可能會暫時中斷工作負載,主要是指重新啟動執行工作負載的節點。您可以透過 GKE 和 Kubernetes 功能,指定中斷發生的時間和方式,以便工作負載在發生中斷時順利處理變更。
以下各節說明 GKE 對叢集進行的變更類型、造成的干擾類型,以及如何做好準備。
透過 GKE 叢集生命週期管理功能升級及更新
在 GKE 中,叢集升級和叢集更新的意義相關。
在 GKE 中,叢集升級 (或簡稱升級) 是指更新控制層 (控制層升級) 或節點 (節點升級) 的 Kubernetes 版本,或同時更新兩者。使用標準叢集時,節點升級也可稱為「節點集區升級」,因為 GKE 會使用單一作業升級節點集區的節點。
「叢集更新」或「更新」是較廣義的詞彙,指的是任何類型的控制層或節點變更,包括更新版本。GKE 會執行升級、其他類型的更新和必要的維護作業,主動管理叢集環境。這些動作可確保叢集維持高效能、安全無虞,並取得最新功能和錯誤修正。GKE 會使用節點升級策略和維護政策等工具,盡量減少這些程序造成的服務中斷。
規劃節點更新中斷
某些類型的叢集變更 (主要是節點變更) 可能會導致中斷。
GKE 會使用節點升級策略更新節點 (包括 Autopilot 節點或 Standard 叢集節點集區),以配合工作負載需求。這些策略適用於版本升級,以及其他類型的節點變更。這些策略可讓 GKE 在執行節點更新時,盡量減少中斷情況,這對維持叢集運作和效能至關重要。
您可以透過維護期間和排除項目,選擇叢集維護作業的執行時間,並為標準叢集選擇最符合工作負載設定檔和資源限制的節點升級策略。
無論是手動或自動啟動節點變更,GKE 都會根據下列一般特徵進行變更:
- 變更通常會遵守維護政策:GKE 對節點進行變更時,通常會遵守 GKE 維護政策。如果您手動發起變更,需要重新建立節點集區中的所有節點,請注意下列事項:
- 變更通常會使用節點升級策略:當 GKE 對節點套用大部分自動或手動啟動的變更 (包括版本升級以外的節點更新) 時,GKE 會選擇節點升級策略:大量升級或藍綠升級。Autopilot 一律會使用突波升級。標準叢集節點集區的變更通常會使用突波升級,除非您已設定藍綠升級,並進行特定類型的變更。
- 變更需要足夠的資源:當 GKE 使用節點升級策略套用變更時,這項變更需要一定量的資源,具體取決於策略及其設定。叢集的專案必須具備足夠的資源配額、資源可用性,以及預留容量 (適用於具有特定預留項目相依性的節點集區)。詳情請參閱「確保節點升級的資源」。
如需特定變更及其特徵的詳細清單,請參閱本頁的「GKE 叢集變更類型」。
做好準備因應中斷性變更,盡可能提高工作負載可用性
如要盡量提高在 GKE 叢集上執行的工作負載可用性,建議您採取下列章節所述的動作:
選擇叢集可用性
如果控制層可用性是首要考量,請選擇 Autopilot 叢集或區域 Standard 叢集,而非區域 Standard 叢集。詳情請參閱「叢集設定選項簡介」。
使用 GKE 工具控管升級作業
您可以使用下列工具控管 GKE 升級叢集的時間和方式,進而實作最佳做法:
- 發布版本: 選擇發布版本,在功能可用性和穩定性之間權衡,為叢集選用合適的版本。
- 維護期間: 指定週期性時間範圍,允許系統在該時段執行特定類型的 GKE 叢集維護作業,例如升級。
- 維護排除條件: 在特定時間範圍內,防止叢集進行維護。
- 節點升級策略: 如果使用標準叢集,請選擇節點的更新方式 (大量升級或藍綠升級),盡量減少工作負載中斷。
- 推出作業排序:在 GKE 升級正式環境叢集之前,先在試前環境中驗證升級作業。
- 手動升級: 手動升級叢集,並執行取消、繼續、回溯及完成自動或手動進行中的升級等動作。
管理及監控叢集
為管理叢集可能發生的中斷情形,請持續執行下列工作:
- 使用 GKE 的可觀測性套件監控叢集。
- 請參閱 GKE 版本資訊,瞭解相關公告。
- 查看叢集通知,例如升級開始或完成、新版本推出、安全性公告和支援終止日期。
- 掌握叢集升級作業的進度,瞭解叢集的升級狀態。
- 請參閱 GKE 發布時間表,瞭解子版本何時可供升級,以及何時會終止支援。
- 使用指導性指引,找出潛在的最佳化機會,並說明如何最佳化叢集用量,包括功能和 API 淘汰的指引。
準備工作負載
管理中斷情形,盡可能讓工作負載具備中斷復原能力:
- 執行工作負載的副本,確保備援機制,避免單點故障。
- 使用 Pod 中斷預算,為應用程式指定中斷預算。
- 為工作負載設定適當長度的終止寬限期,以便正常關閉。
- 如果工作負載使用 GPU 或 TPU,請按照操作說明管理 GPU 和 TPU 的 GKE 節點中斷情形。
- 對於有狀態的應用程式 (通常需要時間才能乾淨地停止 I/O 並從儲存空間卸載),請按照「確保有狀態的工作負載已準備好應對中斷」一文中的步驟操作。
如要一般討論這些主題,請參閱這篇網誌文章的「管理中斷」一節,瞭解「GKE 最佳做法:確保業務持續運作的第 2 天作業」。
GKE 叢集的變更類型
下表列出叢集最常見的重大變更類型,包括這些變更的特性,例如頻率和中斷程度。
升級類型
請參閱下表,瞭解升級作業可能對叢集環境造成的影響。
變更 | 自動或手動啟動 | 遵守維護政策 | 頻率 | 中斷類型 | 中斷程度 |
---|---|---|---|---|---|
控制層升級 | 自動或手動 |
在支援期結束前,自動升級作業會遵守維護政策,但極少數的緊急修正除外 (視需要)。 維護政策不會禁止手動升級。 |
修補程式升級,視發布版本而定,最快每週一次。 每四個月左右進行一次小幅升級。 如果是延長版管道叢集,只有在子版本即將結束支援時,才會進行子版本升級。 |
控制層 |
如果是 Autopilot 和區域 Standard 叢集,控制層仍可使用。 對於區域 Standard 叢集,您會有幾分鐘無法與控制層通訊,也就是說,這段時間內無法設定叢集、節點和工作負載。 |
節點升級 | 自動或手動 |
在支援期結束前,自動升級作業會遵守維護政策,但極少數的緊急修正除外 (視需要)。 維護政策不會禁止手動升級。 |
通常與控制層升級作業相同。 如果叢集未註冊至發布管道,且您停用了節點自動升級功能,就必須負責手動升級叢集的節點集區。 |
Autopilot 叢集的所有節點,或一或多個 Standard 叢集節點集區。 |
節點必須關閉才能重建,Pod 則必須替換。 GKE 會對 Autopilot 使用節點數擴充升級,或對 Standard 叢集使用已設定的節點升級策略 (節點數擴充或藍綠)。 |
手動變更,使用節點升級策略並遵守維護政策,重新建立節點
請參閱下表,瞭解這些手動變更如何中斷叢集環境。這份清單包含手動變更,且符合 GKE 維護政策。
變更 | 自動或手動啟動 | 遵守維護政策 | 頻率 | 中斷類型 | 中斷程度 |
---|---|---|---|---|---|
停用 kubelet 唯讀通訊埠 | 手動啟動 | 不遵守維護政策,立即進行變更。 | 每次變更這類資訊時。 | Autopilot 叢集中的所有節點 標準叢集節點集區中的所有節點。 |
節點必須關機才能重建。必須更換 Pod。 無論是否啟用維護政策,GKE 都會立即使用突波升級功能重建節點。 |
輪替叢集憑證 | 如果叢集憑證即將在 30 天內到期,系統會自動啟動輪替程序,您也可以手動啟動。 | 遵守維護政策。不過,GKE 可能會在憑證到期前 30 天內,覆寫維護政策。在 30 天內,GKE 會忽略第一個步驟 (開始輪替) 的維護可用性。此外,如果您在第一個步驟後手動觸發特定作業,該作業不會遵守維護政策。 | 手動變更這類項目時,每變更一次就會觸發一次輪替;自動啟動則取決於叢集憑證生命週期。您可以手動叫用輪替程序中特定步驟的作業。 | 部分步驟需要控制層。其他步驟:Autopilot 叢集的所有節點,以及每個標準叢集節點集區中的所有節點。 |
重新建立節點時,干擾程度如下:
|
輪替控制層的 IP 位址 | 手動啟動 | 會遵守維護政策,但如果您在第一個步驟後手動觸發特定作業,該作業就不會遵守維護政策。 | 每次手動變更這類設定時,您可以手動叫用輪替程序中特定步驟的作業。 | 部分步驟需要控制層。其他步驟:Autopilot 叢集的所有節點,以及每個標準叢集節點集區中的所有節點。 |
重新建立節點時,干擾程度如下:
|
設定受保護的節點 | 手動啟動 |
重建控制層時,系統不會遵守維護政策,而是立即進行變更。 重新建立節點時,系統會遵守維護政策。 |
每次變更這類資訊時 |
控制層已更新。 更新控制層後,必須重新建立每個標準叢集節點集區中的所有節點。 |
重新建立控制層時,干擾程度如下:
重新建立節點時,中斷程度如下:
|
設定網路政策 | 手動啟動 | 遵守維護政策 | 每次變更這類資訊時 | Autopilot 叢集的所有節點,以及每個標準叢集節點集區中的所有節點。 |
節點必須關閉才能重建,Pod 則必須替換。 GKE 會使用節點數擴充升級功能重建節點。 |
設定節點內瀏覽權限 | 手動啟動 | 遵守維護政策 | 每次變更這類資訊時 | Autopilot 叢集的所有節點,以及每個標準叢集節點集區中的所有節點。 |
節點必須關閉才能重建,Pod 則必須替換。 GKE 會使用節點數擴充升級功能重建節點。 |
設定 NodeLocal DNSCache | 手動啟動 | 遵守維護政策 | 每次變更這類資訊時 | 更新標準叢集節點集區時,必須更新所有節點。 |
節點必須關閉才能重建,Pod 則必須更換。 GKE 會使用節點數擴充升級功能重建節點。 |
啟用映像檔串流 | 手動啟動 |
在叢集層級更新時,會遵守維護政策。 更新個別節點集區時,不會遵守維護政策。 |
每次變更這類資訊時 |
如果在節點集區層級切換,則為標準叢集節點集區中的所有節點。 如果是在叢集層級切換,則適用於所有未個別啟用或停用節點集區設定的標準叢集節點集區節點。 |
GKE 會使用節點數擴充升級功能,重新建立節點集區的節點。 |
自動維護作業未遵守維護政策
請參閱下表,瞭解自動維護作業未遵守維護政策,可能對叢集環境造成哪些影響。
變更 | 自動或手動啟動 | 遵守維護政策 | 頻率 | 中斷類型 | 中斷程度 |
---|---|---|---|---|---|
控制層維修或調整大小 | 自動 | 不遵守維護政策 |
控制層修復頻率為隨機,但不會影響 Autopilot 和區域 Standard 叢集。 控制層大小調整不常發生,但會隨著叢集調度資源事件而增加頻率,且不會影響 Autopilot 和區域 Standard 叢集。 |
控制層 |
如果是 Autopilot 和區域 Standard 叢集,控制層仍可使用。 對於區域 Standard 叢集,您會有幾分鐘無法與控制層通訊,也就是說,這段時間內無法設定叢集、節點和工作負載。 |
主機維護事件 | 自動 | 不遵守維護政策 | 如要瞭解大約頻率,請參閱「維護事件」。 | 一個節點 |
對於大多數節點類型,影響極小。 部分節點 (包括搭載 GPU 或 TPU 的節點) 可能會受到較大的影響。詳情請參閱「其他 Google Cloud 維護作業」。 |
節點自動修復 | 自動 | 不遵守維護政策 | 節點自動修復頻率為隨機。 |
一個節點 | 節點會重新啟動,因此節點上執行的任何 Pod 都會中斷。 |
回收 Spot VM 和先占 VM | 自動 | 不遵守維護政策 |
先占 VM:至少每 24 小時一次。 如果是 Spot VM,當 Compute Engine 需要其他位置的資源時。 |
一個節點 | 請參閱終止及安全關閉 Spot VM,以及終止及安全關閉先占 VM 的詳細資料。 |
維護以 Spanner 為基礎的叢集狀態資料庫 | 自動 | 不遵守維護政策 | 這些事件是隨機發生,不會對叢集或工作負載造成影響。 | 無,以 Spanner 為基礎的資料庫會在 Google 基礎架構中,與叢集控制層和節點分開執行。 | 無,系統會為所有類型的叢集複製以 Spanner 為基礎的資料庫,並在維護期間保持可用。 |
手動變更,使用節點升級策略重新建立節點,但不遵守維護政策
請參閱下表,瞭解這些手動變更如何中斷叢集環境。這份清單包含GKE 使用突增升級和GKE 使用藍綠升級時的變更,這些變更不適用於其他章節,因為不符合維護政策。
變更 | 自動或手動啟動 | 遵守維護政策 | 頻率 | 中斷類型 | 中斷程度 |
---|---|---|---|---|---|
更新節點集區標籤 | 手動啟動 | 不遵守維護政策,立即進行變更。 | 每次變更這類資訊時 | 標準叢集節點集區中的所有節點 | 更新現有節點集區的節點標籤時,無論現行的維護政策為何,GKE 都會立即使用節點數擴充升級功能重新建立節點集區。 |
變更節點機器屬性,垂直調整節點資源配置 | 手動啟動 | 不遵守維護政策,立即進行變更。 | 每次變更這類資訊時 | 標準叢集節點集區中的所有節點 | 無論現行維護政策為何,GKE 都會立即使用節點數擴充升級功能,在現有節點集區上重建節點。 |
圖片類型變更 | 手動啟動 | 不遵守維護政策,立即進行變更。 | 每次變更這類資訊時 | 標準叢集節點集區中的所有節點 |
節點必須關閉才能重建,Pod 則必須替換。 GKE 會對標準叢集使用已設定的節點升級策略 (大量升級或藍綠部署)。 |
在 Standard 叢集節點集區中新增或取代儲存集區 | 手動啟動 | 不遵守維護政策,立即進行變更。 | 每次變更這類資訊時 | 標準叢集節點集區中的所有節點 |
節點必須關閉才能重建,Pod 則必須替換。 GKE 會對標準叢集使用已設定的節點升級策略 (大量升級或藍綠部署)。 |
啟用映像檔串流 | 手動啟動 |
在叢集層級更新時,會遵守維護政策。 更新個別節點集區時,不會遵守維護政策。 |
每次變更這類資訊時 |
如果在節點集區層級切換,則為標準叢集節點集區中的所有節點。 如果是在叢集層級切換,則適用於所有未個別啟用或停用節點集區設定的標準叢集節點集區節點。 |
GKE 會使用節點數擴充升級功能,重新建立節點集區的節點。 |
網路效能設定更新 | 手動啟動 | 不遵守維護政策,立即進行變更。 | 每次變更這類資訊時 | 標準叢集節點集區中的所有節點 |
節點必須關閉才能重建,Pod 則必須更換。 無論現行維護政策為何,GKE 都會立即使用節點數擴充升級功能,在現有節點集區上重建節點。 |
啟用 gVNIC | 手動啟動 | 不遵守維護政策,立即進行變更。 | 每次變更這類資訊時 | 標準叢集節點集區中的所有節點 |
節點必須關閉才能重建,Pod 則必須更換。 無論現行維護政策為何,GKE 都會立即使用節點數擴充升級功能,在現有節點集區上重建節點。 |
節點系統設定變更 | 手動啟動 | 不遵守維護政策,立即進行變更。 | 每次變更這類資訊時 | 標準叢集節點集區中的所有節點 |
節點必須關閉才能重建,Pod 則必須更換。 無論現行維護政策為何,GKE 都會立即使用節點數擴充升級功能,在現有節點集區上重建節點。 |
機密節點 | 手動啟動 | 不遵守維護政策,立即進行變更。 | 每次變更這類資訊時 | 標準叢集節點集區中的所有節點 |
節點必須關閉才能重建,Pod 則必須更換。 無論現行維護政策為何,GKE 都會立即使用節點數擴充升級功能,在現有節點集區上重建節點。 |
不需要重新建立節點的變更
請參閱下表,瞭解哪些節點設定變更不需要重新建立節點。這些變更不會造成中斷,但如果更新後的節點設定會影響工作負載,仍可能導致中斷。
變更 | 自動或手動啟動 | 遵守維護政策 | 頻率 | 中斷類型 | 中斷程度 |
---|---|---|---|---|---|
更新下列設定:
|
手動啟動 | 不遵守維護政策,立即進行變更。 | 每次變更這類資訊時 | 所有相關節點都會更新。 | 由於節點設定更新時不會重建節點,因此不必更換 Pod。 |