排查 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 使用率(millicores), 然后将示例设置为 Max。 使用 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 设置适当的请求和限制,以便为每个 Pod 选择适当的 Kubernetes 服务质量(QoS) 类。
启用水平 Pod 自动缩放程序 (HPA) 设置适当的限制以及启用 HPA 有助于解决 CPU 使用率过高的问题。
选择更高级的 SKU VM 若要处理高 CPU 工作负载,请使用更高的 SKU VM。 为此,请创建新的节点池,关闭节点并使其不可计划,然后清空现有节点池。
隔离系统和用户工作负载 建议创建代理池之外单独的节点池来运行工作负载。 这样可以防止系统节点池过载,并提供更好的性能。

参考

联系我们寻求帮助

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