使用 Kubernetes Beta 版 API,存取 Google Kubernetes Engine (GKE) 叢集的新功能。如要使用 1.24 以上版本推出的 Beta 版 API,請設定 Beta 版 API。
如何透過 Kubernetes API 導入新功能
GKE 叢集包含控制層和工作站節點。控制平面會公開 API 伺服器,而 API 伺服器會公開 Kubernetes API,方便使用者以及內部和外部元件進行通訊。這項 API 會隨著時間演進,在 Alpha 版或 Beta 版階段推出新功能,然後最終升級至正式發布 (GA) 版,或在新的子版本中遭到淘汰並移除。
您只能搭配 Alpha 版叢集使用 Alpha 版 API,但可以搭配所有類型的 GKE 叢集使用 Beta 版 API。從 Kubernetes 1.24 版開始,新叢集會依預設停用新的 Beta 版 API。如果現有叢集執行的版本早於 1.24,系統會保留已啟用的 Beta 版 API,因為現有叢集無法停用自動啟用的 Beta 版 API (早於 1.24 推出) 或手動啟用的 Beta 版 API (1.24 以上版本推出)。對於所有叢集,1.24 版之前推出的現有 Beta 版 API 預設仍會啟用,現有 Beta 版 API 的新版本預設也會啟用。
舉例來說,如果 Kubernetes 1.22 版推出 v1beta1
API,則 Kubernetes 1.25 版會推出這個 Beta 版 API 的新版本 (例如 v1beta3
),且系統會自動啟用該 API。這是因為這是現有 Beta 版 API 的新版本,而非全新的 Beta 版 API。不過,Kubernetes 1.24 以上版本推出的新 v1beta1
版 Beta 版 API 預設為停用。
如要使用 1.24 以上版本導入的 Beta 版 API,您必須為每個叢集中的每個資源設定 Beta 版 API。您可以在建立叢集時啟用 API,也可以為現有叢集啟用 API。如要查看叢集次要版本可用的 Beta 版 API,請參閱可用的 Beta 版 API。
啟用 Beta 版 API 後,該 API 會維持啟用狀態,直到 Beta 版 API 淘汰,且叢集升級至移除該 API 的次要版本為止。如要查看叢集已啟用的 Beta 版 API,請參閱「查看已啟用的 Beta 版 API」。
Kubernetes Beta 版 API 和 Kubernetes 功能閘道
功能閘道是與 Kubernetes API 不同的功能啟用機制,GKE 叢集會以不同方式管理功能閘道。部分 Kubernetes API 和 Kubernetes feature gate 會搭配運作。請務必瞭解特定功能閘道和 API 之間的關聯。詳情請參閱「功能閘」。
可用的 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.32 |
|
|
您必須同時啟用所有列出的 |
1.31 |
|
|
您必須同時啟用這兩個 |
1.29 |
|
|
您必須同時啟用這兩個 API。這會啟用「驗證許可控制政策」 Beta 版功能。 |
1.28 |
|
|
|
1.27 |
|
|
使用 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
,取得最新版本。
設定 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 版功能需要同時在工作節點上執行的 kubelet 啟用。
如要在工作站節點上執行的工作負載中使用這些新啟用的 Beta 版 API 功能,GKE 必須將變更套用至節點:
- 對於新 Standard 節點集區中的節點,以及 Autopilot 節點群組,GKE 會啟用 Beta 版 API。
- 對於現有標準節點集區中的新節點和現有節點,或是 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 後,除非該 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 淘汰項目表。