在 Gemini 的协助下微调 GKE 服务

本页面介绍了如何使用 Google Cloud的 AI 赋能型协作工具 Gemini Cloud Assist 来微调 Google Kubernetes Engine (GKE) 部署,以优化性能和可靠性。Gemini 辅助功能可提供建议、生成代码和排查问题。

除了众多其他优势之外,Gemini Cloud Assist 还可以帮助您实现以下目标:

  • 降低费用:识别空闲资源,调整部署规模,并优化自动扩缩配置,以最大限度地减少不必要的支出。
  • 提高可靠性和稳定性:主动识别潜在问题(例如版本偏差或缺少 Pod 中断预算),以防止停机并确保应用弹性。
  • 优化 AI/机器学习工作负载:获取有关在 GKE 上部署、管理和优化 AI/机器学习工作负载的帮助。
  • 简化问题排查:快速分析日志并查明导致错误的根本原因,从而节省时间和精力。

本页面内容适用于现有 GKE 用户,以及需要预配和配置云资源并部署应用和服务的运维人员和开发者。如需详细了解我们在 Google Cloud 内容中提及的常见角色和示例任务,请参阅常见的 GKE 用户角色和任务

了解 Gemini for Google Cloud 如何以及何时使用您的数据

费用

  • Gemini:在预览版期间,使用 Gemini Cloud Assist 无需付费。

  • GKE:在 GKE 中使用 Gemini Cloud Assist 无需额外付费。

准备工作

如要开始在 GKE 中使用 Gemini,您需要先满足以下前提条件。

本指南假定您拥有一个 GKE 集群,并且最好有一些正在运行的部署。

向 Gemini Cloud Assist 提问

您可以通过 Google Cloud 控制台调用 Gemini Cloud Assist。 借助 Gemini Cloud Assist,您可以使用自然语言提示快速高效地获得任务方面的帮助。

如需从 GKE 页面打开 Cloud Assist,请按以下步骤操作:

  1. 在 Google Cloud 控制台的项目选择器页面上,选择一个启用了 Gemini Cloud Assist 的Google Cloud 项目。

    转到“项目选择器”

  2. 在 Google Cloud 控制台中,前往 Kubernetes Engine 控制台中的特定页面。

    例如,前往 Kubernetes Engine 概览页面。

    前往“Kubernetes Engine 概览”

    如果您有关于特定资源的问题,请先前往相关页面。例如,在集群页面上,Gemini Cloud Assist 可以就集群管理、集群健康状况监控和集群问题排查提供建议。在特定的 Google Cloud 控制台页面上使用 Gemini 有助于为您的问题提供上下文。随后,Gemini 可以利用此上下文以及您所在的整个项目,生成更贴合需求且更准确的帮助信息。

  3. 如需打开 Gemini Cloud Assist 窗格,请点击工具栏中的 spark 打开或关闭 Gemini AI 聊天

  4. 如果系统提示您接受条款,并且您同意这些条款,请点击接受

  5. 在 Gemini 窗格中输入提示。如需查看使用 Gemini 进行问题排查的工作流示例,请参阅下一部分内容。

如需详细了解如何在 Google Cloud 控制台中使用 Gemini,请参阅使用 Gemini Cloud Assist

使用 Gemini 进行问题排查的示例

Gemini 可以帮助您排查 GKE 服务中的问题。

  1. 前往 Google Cloud 控制台中的工作负载页面。

    转到“工作负载”

  2. 选择要进行问题排查的工作负载。

  3. 点击日志标签页。

  4. 点击工具栏中的 spark 打开或关闭 Gemini AI 聊天

  5. 输入提示,描述您遇到的问题。例如,“我的 accounts-db 数据库应用延迟时间较长”。Gemini 可能会要求您提供更多上下文信息,例如数据库类型、影响范围(如受延迟影响的操作和用户)。

  6. Gemini 随后可以提供指导,帮助您自行分析日志,并提供问题排查建议。

  7. 查看并遵循这些建议来解决问题。

Gemini Cloud Assist 的提示示例

本部分展示了一些实际应用场景,并建议了您可以尝试向 Gemini 发出的提示。您收到的实际回答可能是通用回答,也可能是根据您Google Cloud 环境的独特状态量身定制的切实可行的回答。回答中可能包含用于查看和管理您的 Cloud 资源的 Google Cloud 控制台链接,以及用于获取更多信息的相关文档链接。

降低费用

下表列出了可用于帮助降低费用的提示。

提示 回答类型
“如何在不牺牲性能的前提下节省 GKE 集群的费用?”
  • 有关识别并建议移除未充分利用的资源(例如空闲集群)的建议。
  • 有关启用或调整自动扩缩机制的建议。
  • 通过配置审核突出潜在节省空间的建议,例如日志记录保留政策。
“我想升级我的 my-docker-cluster GKE 集群。有什么建议吗?” 有关实现特定 Kubernetes 配置和最佳实践的建议,例如:
  • 为 Pod 定义资源请求和限制,以帮助确保可预测的资源分配。
  • 使用专用命名空间隔离工作负载。
  • 实现 Pod 中断预算,以帮助确保在主动中断(例如节点维护或升级)期间可用的 Pod 副本数量下限。
  • 安排维护窗口,以管理计划内的中断并最大限度地减少意外停机时间。
  • 在发布渠道中注册集群,以管理 GKE 版本升级。
“我的 my-docker-cluster 集群几周后将迎来一次大的流量高峰。有什么建议吗?”
  • 使用 Pod 横向自动扩缩器扩缩应用 Pod 数量的策略。
  • 使用 Pod 纵向自动扩缩器增加每个 Pod 的资源(CPU、内存)的策略。
“我的哪些 GKE 工作负载没有启用 HPA?” 没有启用 Pod 横向自动扩缩器的工作负载的列表。

提高可靠性和稳定性

下表列出了可用于帮助提高 GKE 工作负载可靠性和稳定性的提示。

提示 回答类型
“如何使我的 GKE 集群更可靠并防止停机?”
  • 识别集群中的版本偏差,并建议采取相应措施来保持 Kubernetes 版本兼容性。
  • 提供有关实现资源隔离的建议。
  • 提供有关如何配置 Pod 中断预算的建议,以便在计划内维护或升级期间确保至少有最低数量的 Pod 副本在运行。
“告诉我如何将我的工作负载从 my-cluster 上的 Default 命名空间迁移出去。” 执行以下步骤:
  • 准备目标集群。
  • 将应用和数据迁移到目标集群。
  • 以尽可能短的停机时间切换服务。
“如何确保运行中 Pod 的高可用性?”
  • 指定使用 podAntiAffinity 的 Deployment 以及用于实现冗余的多个副本的详细步骤。
  • 有关设置资源请求和限制以及使用 Pod 横向自动扩缩的建议。

针对 AI/机器学习工作负载优化 GKE

下表列出了可用于获取有关在 GKE 上部署、管理和优化 AI/机器学习工作负载的帮助的提示。

提示 回答类型
“在 GKE 上使用 GPU 运行大规模分布式 TensorFlow 训练时,推荐的节点池配置是什么?” 以下建议可用于优化 GKE 上的分布式 TensorFlow 机器学习训练:
  • 选择合适的 GPU 和机器类型。
  • 启用自动扩缩。
  • 优化网络连接。
  • 利用分布式训练框架。
  • 实施费用节省措施。
“如何在 GKE 上使用 GPU 进行训练?” 有关配置集群和工作负载以使用 GPU 的步骤和注意事项的概览。
“请举例说明如何在 GKE 上部署模型服务容器。” 一个包含示例代码的示例,用于在 GKE 上部署模型服务容器。该示例可能包含最佳实践,有助于确保可伸缩性。
“我应该跟踪哪些指标来评估我的负载均衡设置在推理方面的有效性?” 指标列表(例如流量分配、延迟时间、错误率、CPU 和内存利用率),用于深入了解负载均衡设置的性能和健康状况。

简化问题排查

下表列出了可用于快速分析日志并确定错误根本原因、从而节省时间和精力的提示。

提示 回答类型
“这个错误是什么意思?
Readiness probe failed: Get "https://10…./abcd": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
说明 kubelet 未能在定义的超时期限内执行容器的就绪状态探测,并就潜在原因和问题排查措施提供了建议。
“为什么我的部署 nettools 会因错误 ping: socket: Operation not permitted 而崩溃?” 说明 ping 命令需要 CAP_NET_RAW 安全上下文功能,并且出于安全考虑,Kubernetes 中的容器默认以一组受限的功能运行。
“我的 Pod 因错误 Cannot schedule pods: No preemption victims found for incoming pod. 而无法调度,这意味着什么?” 说明 Kubernetes 中 Pod 调度和抢占机制的工作原理。列出了用于排查未找到抢占受害者的原因的步骤。

后续步骤