GKE 版本管理和支援


本頁面說明 Google Kubernetes Engine (GKE) 的版本控管,以及版本支援政策。隨著時間推移,GKE 會將叢集升級至較新的 Kubernetes 版本。如要進一步瞭解升級作業的運作方式,請參閱「關於 GKE 叢集升級」。

如要查看目前版本的推出和支援時間表,請參閱 GKE 發布時間表

版本支援

GKE 對 Kubernetes 子版本的支援,是以 Kubernetes 開放原始碼政策為依據。GKE 支援子版本,方法是提供相同子版本的修補程式版本,並定期自動將叢集升級至這些較新的修補程式。

Kubernetes 如何支援次要版本

Kubernetes 開放原始碼軟體 (OSS) 社群每年會發布三次次要版本,提供新功能和強化項目。每個發布週期約為 15 週。

Kubernetes 支援各子版本 14 個月。如果支援的次要版本出現重大錯誤和安全漏洞,系統會發布臨時修補程式版本來修正。Kubernetes 社群有時會視需要修訂版本支援日曆。詳情請參閱「支援期限」。

GKE 如何支援子版本

Kubernetes 發布新的次要版本後,GKE 會先在Rapid推出該版本。GKE 會在這段期間提供修補程式版本,但由於搶鮮版提供的是最新 GKE 版本,因此這些版本不適用 GKE 服務水準協議,且可能包含沒有已知應變措施的問題。

GKE 會先在搶鮮版推出新次要版本,然後再推行至一般版。在一般管道中,新叢集可使用某個子版本後,GKE 最多會為該版本提供 24 個月的支援。這項支援包括約 14 個月的標準支援,以及 10 個月的延長支援,可透過延長版管道取得。如要查看特定子版本的供應情形,請參閱 GKE 發布時間表

GKE 次要版本生命週期

GKE 次要版本生命週期包含下列重要步驟:

  1. Kubernetes 發行新的次要版本。
  2. GKE 會在「快速」版本中提供新的次要版本。
  3. GKE 會在「一般」管道中提供新的子版本 (標準支援期開始)。
  4. 在標準支援期間,GKE 會提供子版本的修補程式,包括新功能、安全性修正和錯誤修正。
  5. 子版本在標準支援期結束後 (約 14 個月),就會進入延長支援期。之後,GKE 會為擴充管道中的叢集提供安全修補程式。
  6. 子版本已結束延長支援期,因此不會再收到安全性修補程式。

調整版本供應情形

由於 Kubernetes OSS 社群的政策異動、發現安全漏洞,或是其他無法合理解決的技術問題,GKE 可能會修訂 GKE 版本的支援期限。在黑色星期五和網購星期一等重要業務期間,GKE 也可能會延長支援終止日期。

GKE 至少提供 14 個月的標準支援,延長支援服務則可將支援期延長至最多 24 個月。

如要瞭解最新版本,請參閱 GKE 版本資訊。GKE 會定期更新發布時間表,反映自動升級的時間。

子版本生命週期中的可用性

GKE 為 Kubernetes 子版本提供下列可用期間:

支援期限。GKE 支援子版本共 24 個月。

下表彙整了各項功能的適用期間,詳情請參閱後續章節:

可使用時間 從一般版推出到正式發布的約略時間 GKE 提供哪些支援 存取這段期間的空房資訊
僅提供 Rapid 的期間 第 -1 個月到第 0 個月 GKE 提供的修補程式版本會包含新功能、安全性修正和錯誤修正。不過,這些版本不適用 GKE 服務水準協議,且可能含有無法可解的問題。 僅限搶鮮版
標準支援期 第 1 個月到第 14 個月 GKE 提供的修補程式版本會包含新功能、安全性修正和錯誤修正。 快速版、一般版、穩定版、擴充版、無版本
延長支援期 第 15 個月至第 24 個月 GKE 提供的修補程式版本包含安全性修正。 僅限擴充版 (須使用 GKE Enterprise 或支付叢集額外費用,請參閱「透過擴充版取得長期支援」一文)

僅提供 Rapid 的期間

GKE 會先在搶鮮版發布新的次要版本。該版本會先累積使用量,並在該管道的叢集中展現穩定性,然後才會升級至一般版。只有註冊搶鮮版的叢集,才能在這段期間執行新的子版本。

這段期間通常為 1 到 2 個月,但確切時間取決於每個子版本。詳情請參閱「發布管道的預估時間表」。

標準支援期

GKE 子版本的標準支援期,從該版本在「一般」管道發布時開始算起。所有 GKE 叢集 (無論是否已註冊發布管道) 都能在標準支援服務中執行子版本。在這段期間,GKE 會定期自動將叢集升級至新修補程式版本,當中包含新功能、安全性修正和錯誤修正。

GKE 會自動升級叢集,方式如下:

  • 快速版、一般版、穩定版、無管道:自動升級至其他支援的次要版本,或相同次要版本的修補程式版本。
  • 擴充:GKE 只會自動升級至相同子版本的較新修補程式版本。

如果叢集未註冊擴充發布版本,GKE 最終會根據叢集發布版本的時間表,在標準支援期結束前,自動將叢集升級至下一個支援的子版本。詳情請參閱「發布管道的預估時間表」。不過,如果叢集使用已淘汰的功能或 API,GKE 就不會在該期間升級叢集。您可以使用維護排除條件,暫時禁止 GKE 將叢集升級至下一個次要版本。

標準支援結束日期 (舊稱「產品停產」)

標準支援期限過後,子版本會終止標準支援 (舊稱「終止生命週期」),並停止支援,且所有未註冊延長版的叢集都無法使用。

如果客戶使用的版本即將終止支援,系統會事先傳送電子郵件給專案聯絡人。此外,為了確保安全性和相容性,GKE 也會開始逐步自動升級執行不受支援版本的節點 (無論是否啟用自動升級),因為支援終止的版本不會再收到新的安全性修補程式或錯誤修正內容。如果叢集或節點執行不支援的版本,請先將叢集和節點升級至支援的版本,再向 Cloud 客戶服務團隊尋求協助。

支援期結束的 GKE 子版本不會再收到安全性修補程式或錯誤修正。如果子版本已終止支援,則該版本的修補程式版本將不受支援,也無法使用。GKE 會自動升級未註冊 Extended 管道的所有叢集。詳情請參閱「支援終止後的自動升級」。

延長支援期

標準支援期結束後,子版本會進入延長支援期 (第 15 個月到第 24 個月)。在此期間,GKE 會提供安全性修正的修補程式,包括下列類型的修正:

  • 核心 Kubernetes 元件、節點作業系統和 Google 管理的容器 (與 GKE 叢集版本一併提供) 的中、高和重大安全修補程式。
  • 如果是 Container-Optimized OS,節點作業系統的支援期限可能早於 GKE 子版本的延長支援期限,或會導入不相容的變更。如要進一步瞭解 GKE 如何持續提供支援,請參閱「延展支援期間的 Container-Optimized OS 更新」。

在延長支援期即將結束時,GKE 會開始將叢集升級至下一個子版本。如果叢集使用已淘汰的功能或 API,GKE 就不會升級叢集。您可以使用維護排除項目,暫時禁止 GKE 將叢集升級至下一個次要版本。

延長支援結束日期

延長支援服務結束後,GKE 不會提供任何安全性修正修補程式,子版本也將不受支援。無論叢集是否使用已淘汰的功能或 API,GKE 都會將仍執行不支援子版本的叢集升級為下一個子版本。

支援終止時自動升級

在子版本終止支援前,GKE 會排定叢集自動升級作業,將叢集從一個子版本升級至下一個支援的子版本。升級時間取決於叢集發布版本的時間表。詳情請參閱「發布管道的預估時間表」。舉例來說,與註冊搶鮮版的叢集相比,註冊穩定版的叢集會在標準支援服務即將結束時,升級至下一個子版本。

在標準支援期間,以及註冊延長版管道的叢集延長支援期間,您可以透過維護排除作業防止這項子版本升級,而 GKE 不會升級使用已淘汰功能或 API 的叢集。

不過,如果叢集註冊了延長版管道,則在標準支援期結束時,或延長支援期結束時,GKE 會自動將叢集升級至下一個支援的子版本,確保叢集維持高效能、可用性和安全性。

每個 GKE 版本都提供 14 個月的標準支援,以及 24 個月的總支援 (包括延長支援)。您無法無限期讓叢集使用特定版本,因為如果叢集使用的 GKE 版本不受支援,就會有顯著的安全性、可靠性和相容性風險,而且 GKE 不會為支援終止的版本提供安全性修補程式或錯誤修正。GKE 無法保證會為支援終止的版本提供修補程式或更新。

GKE 會以以下方式升級叢集:

  • 控制層:如果控制層版本無法用於建立新叢集,GKE 會自動將叢集控制層升級至支援的版本。
  • 節點:如果節點執行的版本已結束支援,GKE 會自動升級節點,確保叢集健康狀態,並符合 GKE 版本偏差政策。執行不受支援版本的節點,通常會在支援期限結束日期後一個月內,自動升級至支援的版本。如果節點執行的版本不受支援,可能不會在版本終止服務時立即升級,實際時間可能因 Google 的決定而異。

找出執行子版本的叢集,其標準支援期已結束

GKE 會找出符合下列兩項條件的叢集:

GKE 建議您升級這些叢集,因為執行不受支援的子版本會帶來風險。如果叢集版本在叢集的發布管道中不受支援,GKE 會將叢集升級至下一個支援的子版本。

GKE 會透過 Recommender 服務,以深入分析結果和建議的形式提供這項指引。這項指引不適用於註冊延長版的叢集,這類叢集可以繼續執行子版本,直到延長支援服務結束為止。如要進一步瞭解如何管理 Recommender 的洞察資料和建議,請參閱「運用洞察資料和建議,最佳化 GKE 使用量」。

如要找出控制平面執行版本已過支援期限的叢集,可以使用下列任一方式:

  • 使用 Trusted Cloud 控制台。
  • 使用 gcloud CLI 或 Recommender API,並指定 CLUSTER_VERSION_END_OF_LIFE recommender subtype

如需操作說明,請參閱這篇文章,瞭解如何查看洞察資料和建議。

如要實作這項建議,請將叢集的控制層升級至支援的次要版本。如要查看支援的子版本和支援終止日期,請參閱 GKE 發布時間表。或者,如果想繼續使用現有次要版本,直到延長支援期結束為止,可以將叢集變更為 Extended 管道

延長支援期間的 Container-Optimized OS 更新

在 GKE 子版本的延長支援期間,GKE 會提供叢集的修補程式升級。這些修補程式升級可能包括 Container-Optimized OS 更新,適用於 GKE 次要版本使用的現有 Container-Optimized OS 里程碑。在標準支援期內,GKE 子版本通常會使用一個里程碑,直到延長支援期開始為止。

不過,GKE 子版本使用的 Container-Optimized OS 里程碑會達到支援期限,通常是在 GKE 子版本的延長支援期內。發生這種情況時,GKE 會使用下一個 Container-Optimized OS 里程碑,建構所有後續的 GKE 修補程式版本。如要進一步瞭解里程碑生命週期,請參閱 Container-Optimized OS 的版本控制架構

請參閱下列情境,瞭解自動升級的程序,以及當 GKE 無法再為 GKE 次要版本在同一里程碑中導入 Container-Optimized OS 更新時,叢集管理員必須做出的決定。

Container-Optimized OS 里程碑的支援期限早於子版本的延長支援期限

Container-Optimized OS 里程碑的支援期限會先到期,然後才是使用該里程碑的子版本延長支援期限。在這種情況下,GKE 會使用下一個可用的 Container-Optimized OS 里程碑,進行日後的修補程式升級。在子版本使用的 Container-Optimized OS 里程碑終止支援前,GKE 會執行這項更新。

叢集管理員必須評估是否要升級叢集的背景工作節點,因為 GKE 不會自動將這些節點升級至新里程碑的下一個修補程式版本。您可以手動將節點升級至下一個 GKE 修補程式版本,其中包含新的里程碑。或者,您也可以讓節點繼續執行相同的 GKE 修補程式版本,不要使用新的里程碑。不過,節點必須升級至下一個修補程式或次要版本,才會收到安全性修補程式。

新版 Container-Optimized OS 里程碑的自動升級

在延長支援期間,GKE 子版本的下一個修補程式版本會使用較新的 Container-Optimized OS 里程碑,而非先前的修補程式版本。當新的修補程式版本成為自動升級目標時,GKE 會透過下列方式自動升級叢集:

  • 控制層升級
    • GKE 會照常將控制層升級至下一個修補程式版本。
  • 節點升級
    • GKE 不會將節點升級至下一個修補程式版本。
    • GKE 會在延長支援期即將結束時,將節點升級至下一個子版本,與一般情況相同。詳情請參閱「支援終止後的自動升級」。

由於新的里程碑版本可能會導入與工作負載不相容的變更,因此 GKE 會暫停自動將節點升級至下一個修補程式版本。如果您確定工作負載與下一個 Container-Optimized OS 里程碑相容,可以手動升級至新修補程式版本。如果您手動將節點升級至使用新 Container-Optimized OS 里程碑的修補程式版本,GKE 會繼續自動升級節點修補程式,因為節點現在會執行新的里程碑。

新修補程式版本使用新里程碑時的叢集通知

發生這種情況時,GKE 會傳送叢集通知,當使用新 Container-Optimized OS 里程碑的第一個修補程式版本在「延長支援」管道中推出時,系統就會傳送這則通知。

收到這則通知時,請評估是否要手動將節點升級至下一個修補程式或次要版本,或在延長支援期間內,不要接收這個次要版本的後續修補程式版本。詳情請參閱「延展支援期間,新修補程式版本會變更為新的 Container-Optimized OS 里程碑」一文。

版本管理架構

GKE 會將 GKE 修補程式版本附加至 Kubernetes 語意版本控制的業界標準(x.y.z-gke.N):

Kubernetes 主要版本 (x)
如果公用 API 導入任何回溯不相容的變更,通常會遞增
主要版本。主要版本會使 Kubernetes 版本從 x.y 升級至 x+1.y。
Kubernetes 子版本 (y)
Kubernetes 一年會推出三個新的子版本。每個發布週期約為 15 週。已淘汰的 API 可能會隨著新的子版本 (例如 1.22) 移除。次要版本會使 Kubernetes 版本從 1.y 升級至 1.y+1;例如,Kubernetes 1.32 是在 Kubernetes 1.31 後面的次要版本。
Kubernetes 修補程式版本 (z)
通常每週會提供適用於 GKE 的新 Kubernetes 修補程式版本 (如 1.32.6)。修補程式版本會以漸進方式推行到每個區域
GKE 修補程式版本 (-gke.N)
修補程式版本後的字串為 -gke.N (例如 1.32.6-gke.N),可能包括安全性更新和 GKE 的錯誤修正,以及開放原始碼上游的 Kubernetes 軟體。必須安裝這些更新或修正,才能與 Trusted Cloud by S3NS相容和互通。

檢查可用的版本和預設版本

如要瞭解可用版本,請參閱 GKE 版本資訊

您也可以透過 Trusted Cloud 控制台或 Google Cloud CLI,查看特定區域中可用的 Kubernetes 版本和預設版本。

使用 Trusted Cloud 控制台檢查版本

如要查看預設版本和可用版本,請執行下列步驟:

  1. 前往 Trusted Cloud 控制台的「Google Kubernetes Engine」頁面。

    前往「Google Kubernetes Engine」

  2. 按一下「 Create」(建立)

  3. 選擇「Standard」(標準) 叢集模式,然後按一下「Configure」(設定)

  4. 在「位置類型」部分,選擇叢集的位置類型和預期位置。

  5. 在「控制層版本」部分,選取發布版本。 系統會列出該管道目前所有可用的版本。系統會自動選取預設版本。

使用 gcloud CLI 檢查版本

如要查看可用的版本和預設版本,請為叢集類型執行下列其中一個 gcloud 指令。每個分頁都會提供指令,可檢查特定發布版本或無版本 (舊稱「靜態」) 的版本。

快速

如要查看 Rapid 發布管道中的預設和可用版本,請執行下列指令:

預設版本

gcloud container get-server-config \
   --flatten="channels" \
   --filter="channels.channel=RAPID" \
   --format="yaml(channels.channel,channels.defaultVersion)" \
   --location=COMPUTE_LOCATION

可用版本

gcloud container get-server-config \
   --flatten="channels" \
   --filter="channels.channel=RAPID" \
   --format="yaml(channels.channel,channels.validVersions)" \
   --location=COMPUTE_LOCATION

更改下列內容:

一般

如要查看 Regular 發布管道中的預設和可用版本,請執行下列指令:

預設版本

gcloud container get-server-config \
   --flatten="channels" \
   --filter="channels.channel=REGULAR" \
   --format="yaml(channels.channel,channels.defaultVersion)" \
   --location=COMPUTE_LOCATION

可用版本

gcloud container get-server-config \
   --flatten="channels" \
   --filter="channels.channel=REGULAR" \
   --format="yaml(channels.channel,channels.validVersions)" \
   --location=COMPUTE_LOCATION

更改下列內容:

穩定

如要查看 Stable 發布管道中的預設和可用版本,請執行下列指令:

預設版本

gcloud container get-server-config \
   --flatten="channels" \
   --filter="channels.channel=STABLE" \
   --format="yaml(channels.channel,channels.defaultVersion)" \
   --location=COMPUTE_LOCATION

可用版本

gcloud container get-server-config \
   --flatten="channels" \
   --filter="channels.channel=STABLE" \
   --format="yaml(channels.channel,channels.validVersions)" \
   --location=COMPUTE_LOCATION

更改下列內容:

延長

如要查看 Extended 發布管道中的預設和可用版本,請執行下列指令:

預設版本

gcloud container get-server-config \
   --flatten="channels" \
   --filter="channels.channel=EXTENDED" \
   --format="yaml(channels.channel,channels.defaultVersion)" \
   --location=COMPUTE_LOCATION

可用版本

gcloud container get-server-config \
   --flatten="channels" \
   --filter="channels.channel=EXTENDED" \
   --format="yaml(channels.channel,channels.validVersions)" \
   --location=COMPUTE_LOCATION

更改下列內容:

沒有發布版本

如要查看無管道 (舊稱「static」) 的預設和可用版本,請執行下列指令:

預設版本

gcloud container get-server-config \
   --format="yaml(defaultClusterVersion)" \
   --location=COMPUTE_LOCATION

可用的控制層版本

gcloud container get-server-config \
   --format="yaml(validMasterVersions)" \
   --location=COMPUTE_LOCATION

可用的節點版本

gcloud container get-server-config \
   --format="yaml(validNodeVersions)" \
   --location=COMPUTE_LOCATION

更改下列內容:

指定叢集版本

本節僅適用於以標準模式建立的叢集。

使用 gcloud CLI 建立或升級叢集時,可以使用 --cluster-version 旗標指定叢集版本。您可以使用特定版本,例如 1.9.7-gke.N,也可以使用版本別名:

  • latest:指定在叢集區域或地區中 GKE 目前可用的最高支援 Kubernetes 版本。
  • 1.X:指定 1.X 次要版本中最高有效的 patch+gke.N 修補程式版本
  • 1.X.Y:指定 1.X.Y 修補程式版本中最高有效的 gke.N 修補程式。
  • -:針對叢集控制層,將預設 Kubernetes 版本指定給控制層。如要進行節點升級,請指定叢集控制層執行的版本。

將版本指定為 latest 來建立或升級叢集,將無法提供自動升級。啟用節點自動升級功能,確保叢集中的節點與最新穩定版本保持一致。

指定節點版本

本節內容僅適用於以標準模式建立的叢集。在 Autopilot 叢集中,節點會自動升級至控制層版本,您無法指定版本。

建立或升級節點集區時,您可以指定版本。根據預設,節點執行的 GKE 版本與控制層相同。節點版本不得比控制層版本舊超過兩個次要版本。

除了極少數例外情況,即使叢集版本已無法使用,節點版本仍可繼續使用。

GKE 版本差異政策

GKE 版本差異政策可確保 GKE 叢集的控制層和節點維持相容性。在 GKE 叢集中,節點可以與控制層版本相符,也可以比控制層早兩個子版本。

節點執行的版本不得高於控制層版本。舉例來說,如果叢集的控制層執行 1.31 版,節點可以執行 1.31、1.30 或 1.29 版,但不能執行 1.28 版或更早版本。根據 Kubernetes OSS 版本偏差政策,節點版本不得高於控制層版本。

為確保支援性和可靠性,節點應使用支援的版本,無論是否遵循有效的版本偏差。

找出出現版本偏差且不受支援的叢集

GKE 會找出節點執行的版本與控制層不相容的叢集,原因在於版本偏差。GKE 建議您升級執行這個不支援版本的節點,並透過 Recommender 服務提供洞察資料和建議。如要進一步瞭解如何管理 Recommender 的深入分析和建議,請參閱「運用深入分析和建議,最佳化 GKE 使用量」。

如要找出版本不支援的叢集,可以使用下列其中一種方式:

  • 使用 Trusted Cloud 控制台。
  • 使用 gcloud CLI 或 Recommender API,並指定 CLUSTER_VERSION_SKEW_UNSUPPORTED recommender subtype

如需操作說明,請參閱這篇文章,瞭解如何查看洞察資料和建議。

如要實作這項建議,請升級所有節點,這些節點執行的子版本比控制層版本早超過兩個子版本。

支援略過子版本

GKE 不允許略過叢集控制層的子版本,但可以略過修補程式版本。工作節點可以略過次要版本。舉例來說,節點集區可以從 1.32 版升級至 1.34 版,略過 1.33 版。

如要跨多個子版本升級叢集,請一次升級一個子版本的控制層,並每次都將工作站節點升級至相同版本。舉例來說,如要將控制層從 1.32 版升級至 1.34 版,請先將控制層從 1.32 版升級至 1.33 版,然後將工作節點升級至與控制層版本相符,接著重複上述程序,將控制層從 1.33 版升級至 1.34 版。

將工作節點升級至相符版本,有助於避免不支援的版本偏差。建議您盡量不要跳過版本。略過工作節點版本通常表示測試範圍較大,雖然可管理,但需要更多考量。

或者,您也可以建立採用所需版本的新叢集,並重新部署工作負載。