查看弃用提示和建议


本页面介绍如何查看 Google Kubernetes Engine (GKE) 集群的 Kubernetes 弃用情况的提示和建议。如需详细了解如何使用 GKE 管理 Kubernetes 弃用,请参阅 GKE 弃用

什么是弃用提示和建议?

当 GKE 检测到集群正在使用已弃用并在即将发布的次要版本中移除的 Kubernetes 功能或 API 时,会发生以下情况:

弃用提示和建议由 Recommender 提供,该服务提供有关 Google Cloud 资源使用情况的提示和建议。 如需详细了解 Recommender 如何与 GKE 搭配使用,请参阅利用分析洞见和建议优化 GKE 使用

对于 Recommender 的弃用主题:

  • 提示说明集群正在使用已弃用并将在即将发布的次要版本中移除的功能或 API。
  • 建议提供有关如何缓解集群弃用风险的指导。

例如,提示可能会说明,您的集群使用的 Beta 版 API 已弃用,并将在下一个次要版本中移除。建议则说明,您应该将工作负载从使用 Beta 版 API 迁移到使用 v1 API。 每条建议均包含对已弃用功能或 API 的迁移指南的引用。相应的 Kubernetes 弃用表中也提供了此迁移指南。

GKE 生成数据分析和建议对时,会涵盖项目中特定集群的特定数据分析子类型中任何已弃用的 Kubernetes API 或功能的使用情况。例如,如果任何用户代理调用 DEPRECATION_K8S_1_22_V1BETA1_API 子类型处理的任何 API,系统会显示一条数据分析和建议,建议您迁移此集群以免使用这些 API。如果另一个集群也使用这些 API,则 GKE 会生成另一个数据分析和建议。

GKE 检测到的已弃用 Kubernetes 功能和 API 的使用

弃用 在哪个 GKE 版本中移除 提示子类型
使用 SHA-1 算法签名的 TLS 证书 1.29 DEPRECATION_K8S_SHA_1_CERTIFICATE
Kubernetes 1.29 已弃用的 API 1.29 DEPRECATION_K8S_1_29_API
Kubernetes 1.27 已弃用的 API 1.27 DEPRECATION_K8S_1_27_API
Kubernetes 1.26 已弃用的 API 1.26 DEPRECATION_K8S_1_26_API
Kubernetes 1.25 已弃用的 API 1.25 DEPRECATION_K8S_1_25_API
PodSecurityPolicy 1.25 DEPRECATION_K8S_1_25_PODSECURITYPOLICY
基于 Docker 的节点映像 1.24 DEPRECATION_K8S_1_24_DOCKERSHIM
网络钩子证书中的 X.509 通用名称字段 1.23 DEPRECATION_K8S_1_23_CERTIFICATE
Kubernetes 1.22 已弃用的 API
在 GKE 1.23 中移除了 Kubernetes Ingress Beta 版 API
1.22、1.23 DEPRECATION_K8S_1_22_V1BETA1_API

请注意,对于即将发生的弃用,您必须独立评估集群环境的风险并缓解任何问题。

准备工作

在开始之前,请确保您已执行以下任务:

  • 启用 Google Kubernetes Engine API。
  • 启用 Google Kubernetes Engine API
  • 如果您要使用 Google Cloud CLI 执行此任务,请安装初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请运行 gcloud components update 以获取最新版本。

所需的角色

确保您拥有 Kubernetes 分析洞见和建议所需的权限,可以使用以下基本角色预定义角色

查看分析洞见和建议

您可以使用 Google Cloud CLI、Google Cloud 控制台或 Recommender API 查看提示和建议。

控制台

  1. 转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面:

    转到 Google Kubernetes Engine

  2. 查看特定集群的通知列,以找到分析洞见。

  3. 点击具体的提示可显示更多信息。在显示的边栏面板中,您可以查看有关此分析洞见的详细信息,包括任何关联的建议。

gcloud

分析洞见通常有相应的建议。使用 gcloud recommender insights 提取提示,使用 gcloud recommender recommendations 提取建议。

  1. 查看特定可用区(对于可用区级集群)或特定区域(对于区域级集群)的集群的提示列表:

    gcloud recommender insights list \
        --insight-type=google.container.DiagnosisInsight \
        --location=LOCATION \
        --project=PROJECT_ID \
        --format=FORMAT \
        --filter="insightSubtype:SUBTYPE"
    

    请替换以下内容:

    • PROJECT_ID:集群所在项目的 Google Cloud 项目 ID。
    • LOCATION:集群的确切区域或可用区。对于可用区级集群,您必须提供确切的可用区(例如 us-central1-c)。对于区域级集群,您必须提供确切的区域(例如 us-central1)。
    • FORMAT:将输出格式更改为 YAML。此标志不是必需的。
    • SUBTYPE提示子类型,例如 DEPRECATION_K8S_1_23_CERTIFICATE。这会将输出限制为指定子类型的提示。此标志不是必需的。

    或者,如果您已经知道提示 ID,则可以运行以下命令来查看该提示的详细信息:

    gcloud recommender insights describe INSIGHT \
        --insight-type=google.container.DiagnosisInsight \
        --location=LOCATION \
        --project=PROJECT_ID \
        --format=FORMAT
    

    INSIGHT 替换为提示 ID 的值,该值在提示的 name 字段中的网址末尾指定。

    输出包含有关 GKE 检测到的集群行为的其他详细信息。

  2. 查看特定可用区(对于可用区级集群)或特定区域(对于区域级集群)的集群的建议列表:

    gcloud recommender recommendations list \
        --recommender=google.container.DiagnosisRecommender \
        --location=LOCATION \
        --project=PROJECT_ID \
        --format=FORMAT \
        --filter="recommenderSubtype:SUBTYPE"
    

    SUBTYPE 替换为 Recommender 子类型,例如 DEPRECATION_K8S_1_23_CERTIFICATE。这会将输出限制为指定子类型的建议。此标志不是必需的。

    或者,如果您已经知道建议 ID,则可以运行以下命令来查看建议:

    gcloud recommender recommendations describe RECOMMENDATION_ID \
        --recommender=google.container.DiagnosisRecommender \
        --location=LOCATION \
        --project=PROJECT_ID \
        --format=FORMAT
    

    RECOMMENDATION_ID 替换为第 1 步的命令输出中的 associatedRecommendations.recommendation 值。

    输出提供有关优化集群的 GKE 使用需要采取的措施的指导。

API

每个提示都有相应的建议。使用 REST 资源:projects.locations.insightTypes.insights 提取提示,使用 REST 资源:projects.locations.recommenders.recommendations 提取建议。

  1. 查看特定可用区(对于可用区级集群)或特定区域(对于区域级集群)的集群的提示列表:

    GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/insightTypes/google.container.DiagnosisInsight/insights?filter=insightSubtype%20%3D%20SUBTYPE
    

    请替换以下内容:

    • PROJECT_ID:集群所在项目的 Google Cloud 项目 ID。
    • LOCATION:集群的确切区域或可用区。对于可用区级集群,您必须提供确切的可用区(例如 us-central1-c)。对于区域级集群,您必须提供确切的区域(例如 us-central1)。
    • SUBTYPE提示子类型,例如 DEPRECATION_K8S_1_23_CERTIFICATE。这会将输出限制为指定子类型的提示。此标志不是必需的。

    或者,如果您已经知道提示 ID,则可以发出以下请求来查看该提示的详细信息:

    GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/insightTypes/google.container.DiagnosisInsight/insights/INSIGHT
    

    INSIGHT 替换为提示 ID 的值,该值在提示的 name 字段中的网址末尾指定。

    响应正文包含有关 GKE 检测到的集群行为的详细信息。

  2. 查看特定可用区(对于可用区级集群)或特定区域(对于区域级集群)的集群的建议列表:

    GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.container.DiagnosisRecommender/recommendations?filter=recommenderSubtype%20%3D%20SUBTYPE
    

    SUBTYPE 替换为 Recommender 子类型,例如 DEPRECATION_K8S_1_23_CERTIFICATE。这会将输出限制为指定子类型的建议。此标志不是必需的。

    或者,如果您已经知道建议 ID,则可以发出以下请求来查看建议:

    GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.container.DiagnosisRecommender/recommendations/RECOMMENDATION_ID
    

    RECOMMENDATION_ID 替换为第 1 步响应正文中保存的 associatedRecommendations.recommendation 值。

    响应正文提供有关优化集群的 GKE 使用可能需要采取的措施的指导。

示例:提示

弃用提示包含有关已弃用功能或 API 的使用时间和使用量的详细信息。提示中包含的信息取决于提示为哪种弃用类型提供信息。

以下是 DEPRECATION_K8S_1_22_V1BETA1_API 提示子类型的示例提示:

  name: projects/<PROJECT-NUMBER>/locations/us-central1/insightTypes/google.container.DiagnosisInsight/insights/<INSIGHT-ID>
  observationPeriod: 2592000s
  severity: HIGH
  category: RELIABILITY
  stateInfo:
    state: ACTIVE
  insightSubtype: DEPRECATION_K8S_1_22_V1BETA1_API
  description: Your API clients have used deprecated APIs in the last 30 days that are removed in Kubernetes v1.22. Upgrading your cluster before migrating to the updated APIs supported by v1.22 could cause it to break. [Learn more](https://kubernetes.io/docs/reference/using-api/deprecation-guide/#v1-22).
  targetResources:
    - //container.googleapis.com/projects/<PROJECT-NUMBER>/locations/us-central1/clusters/c1
  associatedRecommendations:
    - recommendation: projects/<PROJECT-NUMBER>/locations/us-central1/recommenders/google.container.DiagnosisRecommender/recommendations/<RECOMMENDATION-ID>
  etag: '"2147dd8e1e302ed7"'
  lastRefreshTime: "2022-01-30T08:00:00Z"
  content:
  targetClusters:
    - clusterId: <CLUSTER-ID>
      clusterUri: //container.googleapis.com/projects/<PROJECT-NUMBER>/locations/us-central1/clusters/c1
  apiDeprecationInsight:
    - api: /apis/networking.k8s.io/v1beta1/Ingress
      stopServingVersion: 1.22
      deprecatedClientStats:
        userAgent: kubectl
        numberOfRequestsLast30Days: 288
        lastRequestTime: "2022-02-30T08:00:18Z"
    - api: /apis/rbac.authorization.k8s.io/v1beta1/ClusterRole
      stopServingVersion: 1.22
      deprecatedClientStats:
        userAgent: kubectl
        numberOfRequestsLast30Days: 126
        lastRequestTime: "2022-02-01T06:45:25Z"

示例:推荐

弃用建议包含弃用说明以及弃用迁移指南链接。您还可以在 GKE 功能弃用表Kubernetes API 弃用表中找到这些迁移指南。

以下是 DEPRECATION_K8S_1_22_V1BETA1_API 建议子类型的示例建议:

  name: projects/<PROJECT-NUMBER>/locations/us-central1/recommenders/google.container.DiagnosisRecommender/recommendations/<RECOMMENDATION-ID>
  description: Update manifests and API clients to use v1 API before upgrading to Kubernetes 1.22 by following the [instructions](https://cloud.google.com/kubernetes-engine/docs/deprecations/apis-1-22).
  primaryImpact:
    category: RELIABILITY
    reliabilityProjection:
      risks:
      - SERVICE_DISRUPTION
  priority: P2
  recommenderSubtype: DEPRECATION_K8S_1_22_V1BETA1_API
  stateInfo:
    state: ACTIVE
  targetResources:
    - //container.googleapis.com/projects/<PROJECT-NUMBER>/locations/us-central1/clusters/c1
  associatedInsights:
    - insight: projects/<PROJECT-NUMBER>/locations/us-central1/insightTypes/google.container.DiagnosisInsight/insights/<INSIGHT-ID>
  etag: '"4dc0f7b33594072f"'
  lastRefreshTime: "2022-01-30T08:00:00Z"
  content:
    overview:
      targetClusters:
        - clusterId: <CLUSTER-ID>
          clusterUri: //container.googleapis.com/projects/<PROJECT-NUMBER>/locations/us-central1/clusters/c1
      apiDeprecationRecommendation:
        - api: /apis/networking.k8s.io/v1beta1/Ingress
          apiReplacement: /apis/networking.k8s.io/v1/Ingress
          stopServingVersion: 1.22
        - api: /apis/rbac.authorization.k8s.io/v1beta1/ClusterRole
          apiReplacement: /apis/rbac.authorization.k8s.io/v1/ClusterRole
          stopServingVersion: 1.22

将数据分析和建议导出到 BigQuery

您可以使用 BigQuery 导出和分析整个组织的分析洞见和建议。如需了解详情,请参阅将建议导出到 BigQuery

忽略或恢复弃用建议

如果您不想再在 Google Cloud 控制台中看到集群的弃用建议,请忽略该建议。例如,您可以忽略适用于临时、短期集群的建议。

如果您忽略建议,则系统不会向在控制台中查看集群的任何用户显示建议。忽略建议后,即使用户代理在忽略后已弃用此子类型中已弃用的 API 或功能,也不会再次显示。

但是,建议仍可通过 Google Cloud CLI 和 Recommender API 发现。

如果您忽略某建议,则只会对所有用户隐藏该建议。自动升级会保持暂停状态,直到您从已弃用的功能或 API 迁移,并且 GKE 连续 30 天未检测到使用已弃用的 API 或您在集群的版本终止服务。如需了解详情,请参阅 GKE 何时恢复自动升级?

忽略建议

如需忽略建议,请按照在 Google Cloud 控制台中查看分析洞见和建议的说明操作,打开边栏面板,其中包含更多详细信息。在该面板中,点击忽略按钮。

恢复已忽略的建议

您可以按照恢复建议中的说明恢复已忽略的建议。

后续步骤

  • 如需详细了解弃用功能如何与 GKE 搭配使用,请参阅 GKE 弃用
  • 如需详细了解 Recommender API,请参阅使用 API - 建议