将 Kubernetes Beta 版 API 与 GKE 集群搭配使用


使用 Kubernetes Beta 版 API 访问 Google Kubernetes Engine (GKE) 集群中的新功能。如需使用 1.24 版或更高版本引入的 Beta 版 API,请配置 Beta 版 API

Kubernetes API 如何引入新功能

GKE 集群由控制平面和工作器节点组成。控制平面公开 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 的新版本也会默认保持启用状态。

例如,如果在 Kubernetes API 1.22 版中引入了 v1beta1 API,然后在 Kubernetes Beta 1.25 版中引入了此 Beta 版 API 的新版本(例如 v1beta3),则该 API 会自动启用。这是因为它是现有 Beta 版 API 的新版本,而不是全新的 Beta 版 API。但是,在 Kubernetes 1.24 版或更高版本中引入的 v1beta1 版本的新 Beta 版 API 默认处于停用状态。

如需使用在 1.24 版及更高版本中引入的 Beta 版 API,您必须为每个集群的每个资源配置 Beta 版 API。您可以在创建集群时为现有集群启用 API。如需查看集群的次要版本可用的 Beta 版 API,请参阅可用的 Beta 版 API

启用 Beta 版 API 后,它将保持启用状态,直到 Beta 版 API 被弃用并且集群升级到 API 被移除的次要版本。 如需查看您的集群已启用哪些 Beta 版 API,请参阅检查已启用哪些 Beta 版 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 可用 Notes
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 弃用政策的约束。测试版 API 被弃用后,您必须停止使用该 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。

如需列出这些命令的 Beta 版 API 资源,请使用表示法 {group}/{version}/{resource}。版本必须是 Beta 版。此有效表示法的一个示例为 authentication.k8s.io/v1beta1/selfsubjectreviews

对于下一部分中的命令,请替换以下变量:

  • CLUSTER_NAME:您要更新的集群的名称。
  • LIST_OF_APIS:您要启用的 Beta 版 API 的列表,以英文逗号分隔。
  • COMPUTE_REGION:新集群的 Compute Engine 地区。对于可用区级集群,请使用 --zone=COMPUTE_ZONE

创建启用了 Beta 版 API 的新集群

创建启用了 Beta 版 API 列表的新集群:

gcloud container clusters create-auto CLUSTER_NAME  \
    --enable-kubernetes-unstable-apis=LIST_OF_APIS \
    --region=COMPUTE_REGION

在现有集群上启用 Beta 版 API

在现有集群上启用 Beta 版 API 列表:

gcloud container clusters update CLUSTER_NAME  \
    --enable-kubernetes-unstable-apis=LIST_OF_APIS \
    --region=COMPUTE_REGION

在现有集群上停用 Beta 版 API

您无法停用集群上已启用的 Beta 版 API。Beta 版 API 在 API 被弃用以及集群升级到 API 被移除的次要版本之前仍然可用。如需了解详情,请参阅 Beta 版 API 弃用

检查已启用哪些 Beta 版 API

检查您的 GKE 集群已启用哪些 Beta 版 API:

gcloud container clusters describe CLUSTER_NAME \
    --region=COMPUTE_REGION \
    --format="value(enableK8sBetaApis.enabledApis)"

Beta 版 API 弃用

Beta 版 API 启用后会保持启用状态,直到 Beta 版 API 被弃用并且集群升级到 API 被移除的次要版本为止。

Beta 版 API 的可用时间通常为三个次要版本,然后会被弃用,取而代之的是新的 Beta 版、稳定版或没有替换版本。Beta 版 API 版本会在弃用后被移除。如果您使用的是已弃用并且将在即将发布的 Kubernetes 次要版本中移除的 Beta 版 API,则需要迁移到受支持的 API,以便您的集群可以升级到 Beta 版 API 将被移除的次要版本。如需了解详情,请参阅 Kubernetes 弃用功能如何与 GKE 搭配使用

GKE 会尝试检测是否使用了已弃用的 Kubernetes API,从而简化此过程。如果 GKE 检测到使用了已弃用的 API,则会暂停自动升级到该 API 被移除的次要版本。GKE 还会分享弃用提示和建议,通知您集群使用了已弃用的 API,以便您可以采取措施来继续升级。如需了解详情,请参阅评估和缓解即将发生的 Kubernetes 弃用的风险

如需查看已弃用 API 的完整列表以及 GKE 是否检测使用情况,请参阅 Kubernetes API 弃用表

后续步骤