排查 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 使用率” (毫微) ,然后将样本设置为 “最大”。 使用 Max 上的排序功能按 Max% 对节点进行排序。 CPU 使用率最高的节点显示在顶部。
在以下屏幕截图中,节点仅使用最大 CPU 的 12%,并且已运行 16 天。
找到 CPU 使用率较高的节点后,选择节点以查找其上的 Pod 及其 CPU 使用率。
注意
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 反馈社区提交产品反馈。