利用分析洞见和建议优化 GKE 使用

使用 Google Kubernetes Engine (GKE) 时,您可以收到有关如何优化集群的规范性指导。

GKE 会监控您的集群,如果有潜在的优化项,则通过 Recommender 提供指导。Recommender 是一项 Google Cloud 服务,它会生成有关使用 Google Cloud上的资源的数据洞见和建议。对于 GKE,Recommender 提供两种类型的信息:

  • 分析洞见说明 GKE 检测到您可以通过某种方式优化集群使用。
  • 建议说明如何优化集群使用。

GKE 在 Google Cloud 控制台中提供此信息,您也可以使用 Google Cloud CLI 和 Recommender API 找到此信息。GKE 提供以下主题的 Recommender:

准备工作

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

  • 启用 Google Kubernetes Engine API。
  • 启用 Google Kubernetes Engine API
  • 如需使用 Google Cloud CLI 执行此任务, 请安装并 初始化 gcloud CLI。如果您之前安装了 gcloud CLI,请通过运行 gcloud components update 命令来获取最新 版本。较早版本的 gcloud CLI 可能不支持运行本文档中的命令。

所需的角色

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

查看分析洞见和建议

您可以使用 Google Cloud CLI、Google Cloud 控制台或 Recommender API 查看分析洞见和建议。

控制台

在控制台中查看建议时,您有两种选择。您可以使用视图顶部的概览统计信息摘要图表,查看项目中所有集群的健康状况、升级和费用优化建议的汇总结果。

或者,您也可以查看每个集群的建议列表。

如需使用统计信息摘要图表查看建议,请按照以下步骤操作:

  1. 前往 Google Cloud 控制台中的 Google Kubernetes Engine 页面:

    转到 Google Kubernetes Engine

  2. 如需查看各项建议影响的集群数量,请点击要查看的类别(健康状况、升级或费用)下方的查看建议。在显示的边栏面板中,建议列表会指明每项建议影响的集群数量。

  3. 如需查看更多信息(包括受影响的集群的名称),请点击建议名称。

  4. 如需查看每个受影响集群的更多详细信息,请再次点击相应建议。

如需查看每个集群的建议,请按照以下步骤操作:

  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 使用可能需要采取的措施的指导。

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

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

忽略或恢复建议

如果您不想再在Google Cloud 控制台中看到集群的建议,请忽略该建议。例如,如果您已评估建议并决定不实施建议,则可以忽略建议。

如果您忽略建议,在控制台中查看该集群的任何用户都不会看到建议。忽略建议后,即使 GKE 检测到相同的行为,也不会再次显示建议。

如果您忽略某项建议,则只会对控制台中的所有用户隐藏该建议。用户仍可通过 Google Cloud CLI 和 Recommender API 发现该建议。

忽略建议

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

使用 Google Cloud CLI 忽略建议

如需使用 gcloud CLI 忽略建议,您必须找到有效建议的“etag 值”,然后将其标记为已忽略。

  1. 列出有效建议:如需查找要忽略的建议,请列出集群的有效建议。如需排除 已忽略、已成功或已失败的建议, 请使用--filter标志:

    gcloud recommender recommendations list \
        --recommender=RECOMMENDER_ID \
        --project=PROJECT_ID \
        --location=LOCATION \
        --filter="stateInfo.state=ACTIVE"
    

    替换以下内容:

    • RECOMMENDER_ID:Recommender 的 ID。
    • PROJECT_ID:集群所在项目的项目 ID。 Google Cloud
    • LOCATION:集群的确切区域或可用区。对于可用区级 集群,您必须提供确切的可用区(例如 us-central1-c)。 对于区域级集群,您必须提供确切的区域(例如 us-central1)。
  2. 提取 etag:从上一个输出中找到 RECOMMENDATION_ID,并对其进行描述以检索其当前状态和 etag:

    gcloud recommender recommendations describe RECOMMENDATION_ID \
        --recommender=RECOMMENDER_ID \
        --project=PROJECT_ID \
        --location=LOCATION
    

    替换以下内容:

    • RECOMMENDATION_ID:您要忽略的建议的 ID。

    记下输出中的 etag 值(例如,"a770e444b0088a35")。

  3. 标记为已忽略:运行 mark-dismissed 命令。Recommender API 需要确切的 etag,以防止出现竞态条件。

    gcloud recommender recommendations mark-dismissed RECOMMENDATION_ID \
        --recommender=RECOMMENDER_ID \
        --project=PROJECT_ID \
        --location=LOCATION \
        --etag='"ETAG_VALUE"'
    

    替换以下内容:

    • ETAG_VALUE:从 describe 命令返回的 etag 值。

恢复已忽略的建议

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

后续步骤