在 GKE 叢集中使用 Kubernetes Beta 版 API


使用 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
  • resource.k8s.io/v1beta1/deviceclasses
  • resource.k8s.io/v1beta1/resourceclaims
  • resource.k8s.io/v1beta1/resourceclaimtemplates
  • resource.k8s.io/v1beta1/resourceslices
  • resource.k8s.io/v1beta1/deviceclasses
  • resource.k8s.io/v1beta1/resourceclaims
  • resource.k8s.io/v1beta1/resourceclaimtemplates
  • resource.k8s.io/v1beta1/resourceslices

您必須同時啟用所有列出的 resource.k8s.io API,並確保節點使用新啟用的 Beta 版 API。這會在 GKE 叢集中啟用 Kubernetes Beta 版的動態資源分配功能。詳情請參閱「動態資源分配」。

1.31
  • storage.k8s.io/v1beta1/volumeattributesclasses
  • networking.k8s.io/v1beta1/ipaddresses
  • networking.k8s.io/v1beta1/servicecidrs
  • storage.k8s.io/v1beta1/volumeattributesclasses
  • networking.k8s.io/v1beta1/ipaddresses
  • networking.k8s.io/v1beta1/servicecidrs

您必須同時啟用這兩個 networking.k8s.io API,並確保節點使用新啟用的 Beta 版 API。這會在執行 1.31.1-gke.1361000 以上版本的 GKE 叢集中,啟用 Kubernetes 多個服務 CIDR Beta 版功能。詳情請參閱 2024 年 10 月 4 日的 GKE 版本資訊

1.29
  • admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies
  • admissionregistration.k8s.io/v1beta1/validatingadmissionpolicybindings
您必須同時啟用這兩個 API。這會啟用「驗證許可控制政策」 Beta 版功能。
1.28
  • admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies
  • admissionregistration.k8s.io/v1beta1/validatingadmissionpolicybindings
1.27
  • authentication.k8s.io/v1beta1/selfsubjectreviews
  • authentication.k8s.io/v1beta1/selfsubjectreviews

使用 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 淘汰項目表

後續步驟