排查 AKS 群集中 CPU 使用率过高的问题

CPU 使用率过高是一个或多个应用程序或进程的症状,这些应用程序或进程需要大量 CPU 时间,以至于计算机的性能或可用性受到影响。 CPU 使用率过高可能以多种方式出现,但主要是由用户配置引起的。

Azure Kubernetes 服务 (AKS) 群集中的节点遇到高 CPU 使用率时,其上运行的应用程序可能会遇到性能和可靠性下降的情况。 应用程序或进程也会变得不稳定,这可能会导致响应速度缓慢之外的问题。

本文可帮助你识别 CPU 使用率过高的节点和容器,并提供解决 CPU 使用率过高的最佳做法。

症状

下表概述了 CPU 使用率过高的常见症状:

症状 说明
CPU 不足 CPU 密集型应用程序会降低同一节点上的其他应用程序的速度。
慢速状态更改 Pod 可能需要更长的时间才能准备就绪。
NotReady 节点状态 节点进入 NotReady 状态。 出现此问题的原因是 CPU 使用率较高的容器会导致 Kubectl 命令行工具无响应。

故障排除清单

若要解决 CPU 使用率过高的问题,请使用有效的监视工具并应用最佳做法。

步骤 1:识别 CPU 使用率较高的节点/容器

使用以下方法之一来识别 CPU 使用率较高的节点和容器:

  • 在 Web 浏览器中,在 Azure 门户中使用 AKS 的容器见解功能。

  • 在控制台中,使用 kubernetes 命令行工具 (kubectl) 。

容器见解 是 AKS 中的一项功能。 它旨在监视容器工作负载的性能。 可以使用容器见解来识别导致 CPU 使用率过高的节点、容器或 Pod。

若要识别导致 CPU 使用率过高的节点、容器或 Pod,请执行以下步骤:

  1. Azure 门户导航到群集。

  2. 在“ 监视”下,选择“ 见解”。

    “见解”下的“监视”的屏幕截图

  3. 设置适当的 时间范围

    时间范围为 6 小时的屏幕截图。

  4. 找到 CPU 使用率较高的节点,如果节点 CPU 使用率稳定,检查。

    选择 “节点”。 将 “指标 ”设置为 “CPU 使用率” (毫微) ,然后将样本设置为 “最大”。 使用 Max 上的排序功能按 Max% 对节点进行排序。 CPU 使用率最高的节点显示在顶部。

    在以下屏幕截图中,节点仅使用最大 CPU 的 12%,并且已运行 16 天。

    “监视”选项下的“节点”的屏幕截图。

  5. 找到 CPU 使用率较高的节点后,选择节点以查找其上的 Pod 及其 CPU 使用率。

    “监视”选项下 Pod 的见解选项的屏幕截图。

    注意

    Pod 的 CPU 或内存使用率百分比基于为容器指定的 CPU 请求。 它不表示节点的 CPU 或内存使用率的百分比。 因此,请查看实际 CPU 或内存使用率,而不是 Pod 的 CPU 或内存使用率百分比。

    获取 CPU 使用率较高的 Pod 列表后,可以将其映射到导致 CPU 使用率高峰的应用程序。

步骤 2:查看避免 CPU 使用率过高的最佳做法

请查看下表,了解如何实现避免 CPU 使用率过高的最佳做法:

最佳做法 说明
为容器设置适当的限制 Kubernetes 允许对容器的资源指定请求和限制。 资源请求和限制表示容器可以使用的最小和最大资源数。 建议设置适当的请求和限制,为每个 Pod 选择适当的 Kubernetes 服务质量 (QoS) 类。
启用水平 Pod 自动缩放程序 (HPA) 设置适当的限制以及启用 HPA 有助于解决 CPU 使用率过高的问题。
选择更高 SKU VM 若要处理 CPU 使用率较高的工作负载,请使用更高的 SKU VM。 为此,请创建新的节点池,关闭节点,使其不可计划,并清空现有节点池。
隔离系统和用户工作负载 建议创建单独的节点池 (,) 代理池以外的其他节点池来运行工作负荷。 这可以防止系统节点池过载,并提供更好的性能。

References

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。