在 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 窗格,请点击工具栏中的星光图标 打开或关闭 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 工作负载可靠性和稳定性的提示。

提示 回答类型
“How can I make my GKE clusters more reliable and prevent downtime?”
  • 识别集群中的版本偏差,并建议采取相应措施来保持 Kubernetes 版本兼容性。
  • 提供有关实现资源隔离的建议。
  • 提供有关如何配置 Pod 中断预算的建议,以便在计划的维护或升级期间保持最低数量的正在运行的 Pod 副本。
“Show me how I can move my workloads from the Default namespace on my-cluster.”(请展示如何将工作负载从 my-cluster 上的 Default 命名空间迁移出来。) 以下步骤可帮助您完成上述操作:
  • 准备目标集群。
  • 将应用和数据迁移到目标集群。
  • 以尽可能短的停机时间切换服务。
“如何确保运行中的 pod 具有高可用性?”
  • 详细过程,指定了使用 podAntiAffinity 的 Deployment,以及用于实现冗余的多个副本。
  • 有关设置资源请求和限制以及使用 Pod 横向自动扩缩的建议。

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

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

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

简化问题排查

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

提示 回答类型
“What's this error about?
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 调度和抢占机制。列出了用于排查未找到抢占受害者的原因的步骤。

后续步骤