排查 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,请执行以下步骤:
从Azure 门户导航到群集。
在“监视”下,选择“见解”。
设置适当的 时间范围。
找到 CPU 使用率较高的节点,并检查节点 CPU 使用率是否稳定。
选择“节点”。 将 指标 设置为 CPU 使用率(millicores), 然后将示例设置为 Max。 使用 Max 上的排序功能按 Max% 对节点进行排序。 CPU 使用率最高的节点显示在顶部。
在以下屏幕截图中,节点仅使用最大 CPU 的 12%,并且已运行 16 天。
找到 CPU 使用率较高的节点后,选择节点以在其上查找 Pod 及其 CPU 使用率。
注意
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 反馈社区。