Kubernetes API 如何推出新功能
GKE 叢集包含控制層和 worker 節點。控制層會公開 API 伺服器,而 API 伺服器會公開 Kubernetes API,讓使用者以及內部和外部元件可以通訊。這個 API 會隨著時間演進,在 Alpha 或 Beta 階段推出新功能,最終升級至正式發布 (GA) 階段,或在較新的子版本中淘汰並移除。
Alpha 版 API 只能與 Alpha 版叢集搭配使用,但 Beta 版 API 可與所有類型的 GKE 叢集搭配使用。從 Kubernetes 1.24 版開始,新叢集預設會停用新的 Beta 版 API。如果現有叢集建立時執行的版本低於 1.24,則會繼續啟用現有的 Beta 版 API,因為自動啟用 (1.24 版之前推出) 或手動啟用 Beta 版 API (1.24 版或之後推出) 無法在現有叢集上停用。對於所有叢集,1.24 版之前推出的現有 Beta 版 API 預設仍會啟用,現有 Beta 版 API 的新版本預設也會啟用。
舉例來說,如果 v1beta1 API 是在 Kubernetes 1.22 版推出,而這個 Beta 版 API 的新版本 (例如 v1beta3) 是在 Kubernetes 1.25 版推出,系統會自動啟用該 API。這是因為它是現有 Beta 版 API 的新版本,而不是全新的 Beta 版 API。不過,在 Kubernetes 1.24 以上版本中,預設會停用 v1beta1 版本的全新 Beta 版 API。
如要使用 1.24 以上版本推出的 Beta 版 API,您必須為每個叢集的每項資源設定 Beta 版 API。您可以在建立叢集時或為現有叢集啟用 API。如要查看叢集子版本可用的 Beta 版 API,請參閱可用的 Beta 版 API。
啟用 Beta 版 API 後,該 API 會保持啟用狀態,直到 Beta 版 API 淘汰,且叢集升級至移除該 API 的子版本為止。如要查看叢集啟用了哪些 Beta 版 API,請參閱「查看已啟用的 Beta 版 API」。
Kubernetes Beta 版 API 和 Kubernetes feature gate
feature gate 是與 Kubernetes API 不同的功能啟用機制,GKE 叢集會以不同方式管理。部分 Kubernetes API 和 Kubernetes feature gate 會搭配運作。請務必瞭解特定 feature gate 與 API 之間的關聯。詳情請參閱「feature gate」。
可用的 Beta 版 API
您可以為 GKE 叢集啟用部分 Kubernetes Beta 版 API。其他 Beta 版 API 無法使用的原因包括:
- Beta 版 API 仰賴非正式發布版的 Kubernetes 功能。
- Beta 版 API 不安全。
- Beta 版 API 與 Autopilot 不相容。
請參閱下表,瞭解 Beta 版 API 和推出這些 API 的對應子版本:
| Kubernetes 版本 | 這個 Kubernetes 子版本新增的 Beta 版 API | 適用於 GKE | 附註 |
|---|---|---|---|
| 1.37 |
|
|
您必須同時啟用這兩個 API,並確保節點使用新啟用的 Beta 版 API。 |
| 1.36 |
|
|
|
| 1.35 |
|
|
|
| 1.34 |
|
|
您必須同時啟用這兩個 API。 |
| 1.33 |
|
|
啟用任何 |
| 1.32 |
|
|
您必須同時啟用所有列出的 |
| 1.31 |
|
|
您必須同時啟用這兩個 |
| 1.30 |
|
|
使用 Beta 版 API 前的注意事項
Kubernetes Beta 版 API 須遵守 Kubernetes 廢止政策。Beta 版 API 淘汰後,您必須停止使用。詳情請參閱「Beta 版 API 淘汰」。
事前準備
開始之前,請確認您已執行下列工作:
- 啟用 Google Kubernetes Engine API。 啟用 Google Kubernetes Engine API
- 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行
gcloud components update指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文中的指令。
設定 Beta 版 API
Beta 版 API 是按叢集中的個別資源啟用。您可以在建立叢集時啟用 API,也可以為現有叢集啟用 API。
如要列出這些指令的 Beta 版 API 資源,請使用 {group}/{version}/{resource} 表示法。版本必須是 Beta 版。有效表示法的範例如下:authentication.k8s.io/v1beta1/selfsubjectreviews。
在下一節的指令中,請替換下列變數:
CLUSTER_NAME:要更新的叢集名稱。LIST_OF_APIS:要啟用的 Beta 版 API 清單,以逗號分隔的清單。CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 位置。提供區域叢集的區域,或可用區叢集的可用區。
建立已啟用 Beta 版 API 的新叢集
建立新叢集,並啟用一系列 Beta 版 API:
gcloud container clusters create-auto CLUSTER_NAME \
--enable-kubernetes-unstable-apis=LIST_OF_APIS \
--location=CONTROL_PLANE_LOCATION
在現有叢集啟用 Beta 版 API
在現有叢集上啟用 Beta 版 API 清單:
gcloud container clusters update CLUSTER_NAME \
--enable-kubernetes-unstable-apis=LIST_OF_APIS \
--location=CONTROL_PLANE_LOCATION
確認節點使用新啟用的 Beta 版 API
部分 Beta 版功能也必須在 worker 節點上執行的 kubelet 啟用。
如要搭配在 worker 節點上執行的工作負載,使用這些新啟用的 Beta 版 API 功能,GKE 必須將變更套用至節點:
- 對於新 Standard 節點集區和 Autopilot 節點群組中的節點,GKE 會啟用 Beta 版 API。
- 對於現有 Standard 節點集區中的新節點和現有節點,或 Autopilot 中的現有節點群組,GKE 會在節點升級或其他類型的節點更新期間,重新建立節點時套用變更。如要立即將變更套用至 Standard 叢集節點集區中的現有節點,可以手動將節點集區升級至較新的 GKE 版本。執行就地升級不會套用變更。
停用現有叢集的 Beta 版 API
您無法停用叢集上已啟用的 Beta 版 API。Beta 版 API 會持續提供,直到淘汰並將叢集升級至移除 API 的子版本為止。詳情請參閱「Beta 版 API 淘汰」。
查看已啟用的 Beta 版 API
查看 GKE 叢集啟用了哪些 Beta 版 API:
gcloud container clusters describe CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--format="value(enableK8sBetaApis.enabledApis)"
Beta 版 API 淘汰
Beta 版 API 啟用後,會維持啟用狀態,直到 Beta 版 API 淘汰,且叢集升級至移除該 API 的子版本。
Beta 版 API 通常會提供三個子版本,之後就會淘汰,改用新的 Beta 版、穩定版,或不提供替代版本。Beta 版 API 會在淘汰後的三個子版本中移除。如果您使用的 Beta 版 API 已淘汰,且會在即將推出的 Kubernetes 子版本中移除,請務必遷移至支援的 API,這樣叢集才能升級至移除 Beta 版 API 的子版本。詳情請參閱「Kubernetes 淘汰作業在 GKE 的運作方式」。
GKE 會嘗試偵測是否使用已淘汰的 Kubernetes API,簡化這項程序。如果 GKE 偵測到使用已淘汰的 API,就會暫停自動升級至移除該 API 的子版本。GKE 也會分享淘汰深入分析和建議,通知您叢集使用已淘汰的 API,以便您採取行動,讓升級作業繼續進行。詳情請參閱「評估及降低即將淘汰的 Kubernetes 功能帶來的影響」。
如需已淘汰 API 的完整清單,以及 GKE 是否會偵測使用情形,請參閱 Kubernetes API 淘汰表。