利用分析洞见和建议优化 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:

  • 弃用缓解弃用 Kubernetes 功能或 API 所面临的风险。
  • 操作和连接修复了与控制平面和节点连接以及 IP 地址利用率相关的问题。
  • 费用优化:实施费用优化的配置和实践。例如,识别空闲的 GKE 集群超额预配的 GKE 集群
  • 可扩缩性:实施可靠性改进实践,例如扩容预配不足的 GKE 集群
  • 资源请求和限制:设置资源请求和限制,以避免在节点资源压力下突然终止 Pod,并提高费用分配的准确性。
  • Agones隔离集群中的 Agones 控制器。
  • 中断:确保工作负载在维护期间的连续性和可恢复性。
  • Webhook使用 Webhook 时,请确保控制平面的稳定性。
  • 数据保护确保工作负载免受中断性事件的影响。
  • 集群凭据变换集群凭据以防止中断。
  • 发布渠道在发布渠道中注册集群。
  • 维护窗口选择 GKE 集群维护发生的周期性时间段。
  • 受支持的版本确保集群运行受支持的版本,并且该版本遵守 GKE 版本偏差政策。如需了解详情,请参阅引用页面中的“在支持终止时自动升级”和“GKE 版本偏差政策”部分。
  • 节点服务账号权限确保节点服务账号拥有正常 GKE 操作所需的关键权限。
  • CRD:通过修复配置错误的具有无效 CA 软件包的 CRD,确保集群稳定运行。
  • etcd 用量:确保 etcd 数据库有足够的存储空间,以防止集群不稳定。

准备工作

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

  • 启用 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. 如需查看更多信息(包括受影响的集群的名称),请点击建议名称。

  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 控制台中查看分析洞见和建议的说明操作,打开边栏面板,其中包含更多详细信息。在该面板中,点击忽略按钮。

恢复已忽略的建议

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

后续步骤